約 5,863,188 件
https://w.atwiki.jp/alphaomega/pages/60.html
youtube-dl - download videos from youtube.com or other video platforms INSTALLATION DESCRIPTION OPTIONS CONFIGURATION OUTPUT TEMPLATE FORMAT SELECTION VIDEO SELECTION FAQ DEVELOPER INSTRUCTIONS EMBEDDING YOUTUBE-DL BUGS COPYRIGHT INSTALLATION To install it right away for all UNIX users (Linux, macOS, etc.), type sudo curl -L https //yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl sudo chmod a+rx /usr/local/bin/youtube-dl If you do not have curl, you can alternatively use a recent wget sudo wget https //yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl sudo chmod a+rx /usr/local/bin/youtube-dl Windows users can download an .exe file and place it in any location on their PATH except for %SYSTEMROOT%\System32 (e.g. do not put in C \Windows\System32). You can also use pip sudo -H pip install --upgrade youtube-dl This command will update youtube-dl if you have already installed it. See the pypi page for more information. macOS users can install youtube-dl with Homebrew brew install youtube-dl Or with MacPorts sudo port install youtube-dl Alternatively, refer to the developer instructions for how to check out and work with the git repository. For further options, including PGP signatures, see the youtube-dl Download Page. DESCRIPTION youtube-dl is a command-line program to download videos from YouTube.com and a few more sites. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on macOS. It is released to the public domain, which means you can modify it, redistribute it or use it however you like. youtube-dl [OPTIONS] URL [URL...] OPTIONS -h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed) -i, --ignore-errors Continue on download errors, for example to skip unavailable videos in a playlist --abort-on-error Abort downloading of further videos (in the playlist or the command line) if an error occurs --dump-user-agent Display the current browser identification --list-extractors List all supported extractors --extractor-descriptions Output descriptions of all supported extractors --force-generic-extractor Force extraction to use the generic extractor --default-search PREFIX Use this prefix for unqualified URLs. For example gvsearch2 downloads two videos from google videos for youtube-dl large apple . Use the value auto to let youtube-dl guess ( auto_warning to emit a warning when guessing). error just throws an error. The default value fixup_error repairs broken URLs, but emits an error if this is not possible instead of searching. --ignore-config Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf Do not read the user configuration in ~/.config/youtube- dl/config (%APPDATA%/youtube-dl/config.txt on Windows) --config-location PATH Location of the configuration file; either the path to the config or its containing directory. --flat-playlist Do not extract the videos of a playlist, only list them. --mark-watched Mark videos watched (YouTube only) --no-mark-watched Do not mark videos watched (YouTube only) --no-color Do not emit color codes in output Network Options --proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme. For example socks5 //127.0.0.1 1080/. Pass in an empty string (--proxy ) for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 Geo Restriction --geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading. --geo-bypass Bypass geographic restriction via faking X-Forwarded-For HTTP header --no-geo-bypass Do not bypass geographic restriction via faking X-Forwarded-For HTTP header --geo-bypass-country CODE Force bypass geographic restriction with explicitly provided two-letter ISO 3166-2 country code --geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with explicitly provided IP block in CIDR notation Video Selection --playlist-start NUMBER Playlist video to start at (default is 1) --playlist-end NUMBER Playlist video to end at (default is last) --playlist-items ITEM_SPEC Playlist video items to download. Specify indices of the videos in the playlist separated by commas like --playlist-items 1,2,5,8 if you want to download videos indexed 1, 2, 5, 8 in the playlist. You can specify range --playlist-items 1-3,7,10-13 , it will download the videos at index 1, 2, 3, 7, 10, 11, 12 and 13. --match-title REGEX Download only matching titles (regex or caseless sub-string) --reject-title REGEX Skip download for matching titles (regex or caseless sub-string) --max-downloads NUMBER Abort after downloading NUMBER files --min-filesize SIZE Do not download any videos smaller than SIZE (e.g. 50k or 44.6m) --max-filesize SIZE Do not download any videos larger than SIZE (e.g. 50k or 44.6m) --date DATE Download only videos uploaded in this date --datebefore DATE Download only videos uploaded on or before this date (i.e. inclusive) --dateafter DATE Download only videos uploaded on or after this date (i.e. inclusive) --min-views COUNT Do not download any videos with less than COUNT views --max-views COUNT Do not download any videos with more than COUNT views --match-filter FILTER Generic video filter. Specify any key (see the OUTPUT TEMPLATE for a list of available keys) to match if the key is present, !key to check if the key is not present, key NUMBER (like comment_count 12 , also works with =, , =, !=, =) to compare against a number, key = LITERAL (like uploader = Mike Smith , also works with !=) to match against a string literal and to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter like_count 100 dislike_count ? 50 description . --no-playlist Download only the video, if the URL refers to a video and a playlist. --yes-playlist Download the playlist, if the URL refers to a video and a playlist. --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it. --include-ads Download advertisements as well (experimental) Download Options -r, --limit-rate RATE Maximum download rate in bytes per second (e.g. 50K or 4.2M) -R, --retries RETRIES Number of retries (default is 10), or infinite . --fragment-retries RETRIES Number of retries for a fragment (default is 10), or infinite (DASH, hlsnative and ISM) --skip-unavailable-fragments Skip unavailable fragments (DASH, hlsnative and ISM) --abort-on-unavailable-fragment Abort downloading when some fragment is not available --keep-fragments Keep downloaded fragments on disk after downloading is finished; fragments are erased by default --buffer-size SIZE Size of download buffer (e.g. 1024 or 16K) (default is 1024) --no-resize-buffer Do not automatically adjust the buffer size. By default, the buffer size is automatically resized from an initial value of SIZE. --http-chunk-size SIZE Size of a chunk for chunk-based HTTP downloading (e.g. 10485760 or 10M) (default is disabled). May be useful for bypassing bandwidth throttling imposed by a webserver (experimental) --playlist-reverse Download playlist videos in reverse order --playlist-random Download playlist videos in random order --xattr-set-filesize Set file xattribute ytdl.filesize with expected file size --hls-prefer-native Use the native HLS downloader instead of ffmpeg --hls-prefer-ffmpeg Use ffmpeg instead of the native HLS downloader --hls-use-mpegts Use the mpegts container for HLS videos, allowing to play the video while downloading (some players may not be able to play it) --external-downloader COMMAND Use the specified external downloader. Currently supports aria2c,avconv,axel,curl,ffmpeg,httpie,wget --external-downloader-args ARGS Give these arguments to the external downloader Filesystem Options -a, --batch-file FILE File containing URLs to download ( - for stdin), one URL per line. Lines starting with # , ; or ] are considered as comments and ignored. --id Use only video ID in file name -o, --output TEMPLATE Output filename template, see the OUTPUT TEMPLATE for all the info --autonumber-start NUMBER Specify the start value for %(autonumber)s (default is 1) --restrict-filenames Restrict filenames to only ASCII characters, and avoid and spaces in filenames -w, --no-overwrites Do not overwrite files -c, --continue Force resume of partially downloaded files. By default, youtube-dl will resume downloads if possible. --no-continue Do not resume partially downloaded files (restart from beginning) --no-part Do not use .part files - write directly into output file --no-mtime Do not use the Last-modified header to set the file modification time --write-description Write video description to a .description file --write-info-json Write video metadata to a .info.json file --write-annotations Write video annotations to a .annotations.xml file --load-info-json FILE JSON file containing the video information (created with the --write-info-json option) --cookies FILE File to read cookies from and dump cookie jar in --cache-dir DIR Location in the filesystem where youtube-dl can store some downloaded information permanently. By default $XDG_CACHE_HOME/youtube-dl or ~/.cache/youtube-dl . At the moment, only YouTube player files (for videos with obfuscated signatures) are cached, but that may change. --no-cache-dir Disable filesystem caching --rm-cache-dir Delete all filesystem cache files Thumbnail images --write-thumbnail Write thumbnail image to disk --write-all-thumbnails Write all thumbnail image formats to disk --list-thumbnails Simulate and list all available thumbnail formats Verbosity / Simulation Options -q, --quiet Activate quiet mode --no-warnings Ignore warnings -s, --simulate Do not download the video and do not write anything to disk --skip-download Do not download the video -g, --get-url Simulate, quiet but print URL -e, --get-title Simulate, quiet but print title --get-id Simulate, quiet but print id --get-thumbnail Simulate, quiet but print thumbnail URL --get-description Simulate, quiet but print video description --get-duration Simulate, quiet but print video length --get-filename Simulate, quiet but print output filename --get-format Simulate, quiet but print output format -j, --dump-json Simulate, quiet but print JSON information. See the OUTPUT TEMPLATE for a description of available keys. -J, --dump-single-json Simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line. --print-json Be quiet and print the video information as JSON (video is still being downloaded). --newline Output progress bar as new lines --no-progress Do not print progress bar --console-title Display progress in console titlebar -v, --verbose Print various debugging information --dump-pages Print downloaded pages encoded using base64 to debug problems (very verbose) --write-pages Write downloaded intermediary pages to files in the current directory to debug problems --print-traffic Display sent and read HTTP traffic -C, --call-home Contact the youtube-dl server for debugging --no-call-home Do NOT contact the youtube-dl server for debugging Workarounds --encoding ENCODING Force the specified encoding (experimental) --no-check-certificate Suppress HTTPS certificate validation --prefer-insecure Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube) --user-agent UA Specify a custom user agent --referer URL Specify a custom referer, use if the video access is restricted to one domain --add-header FIELD VALUE Specify a custom HTTP header and its value, separated by a colon . You can use this option multiple times --bidi-workaround Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH --sleep-interval SECONDS Number of seconds to sleep before each download when used alone or a lower bound of a range for randomized sleep before each download (minimum possible number of seconds to sleep) when used along with --max-sleep-interval. --max-sleep-interval SECONDS Upper bound of a range for randomized sleep before each download (maximum possible number of seconds to sleep). Must only be used along with --min-sleep-interval. Video Format Options -f, --format FORMAT Video format code, see the FORMAT SELECTION for all the info --all-formats Download all available video formats --prefer-free-formats Prefer free video formats unless a specific one is requested -F, --list-formats List all available formats of requested videos --youtube-skip-dash-manifest Do not download the DASH manifests and related data on YouTube videos --merge-output-format FORMAT If a merge is required (e.g. bestvideo+bestaudio), output to given container format. One of mkv, mp4, ogg, webm, flv. Ignored if no merge is required Subtitle Options --write-sub Write subtitle file --write-auto-sub Write automatically generated subtitle file (YouTube only) --all-subs Download all the available subtitles of the video --list-subs List all available subtitles for the video --sub-format FORMAT Subtitle format, accepts formats preference, for example srt or ass/srt/best --sub-lang LANGS Languages of the subtitles to download (optional) separated by commas, use --list- subs for available language tags Authentication Options -u, --username USERNAME Login with this account ID -p, --password PASSWORD Account password. If this option is left out, youtube-dl will ask interactively. -2, --twofactor TWOFACTOR Two-factor authentication code -n, --netrc Use .netrc authentication data --video-password PASSWORD Video password (vimeo, smotri, youku) Adobe Pass Options --ap-mso MSO Adobe Pass multiple-system operator (TV provider) identifier, use --ap-list-mso for a list of available MSOs --ap-username USERNAME Multiple-system operator account login --ap-password PASSWORD Multiple-system operator account password. If this option is left out, youtube-dl will ask interactively. --ap-list-mso List all supported multiple-system operators Post-processing Options -x, --extract-audio Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe) --audio-format FORMAT Specify audio format best , aac , flac , mp3 , m4a , opus , vorbis , or wav ; best by default; No effect without -x --audio-quality QUALITY Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default 5) --recode-video FORMAT Encode the video to another format if necessary (currently supported mp4|flv|ogg|webm|mkv|avi) --postprocessor-args ARGS Give these arguments to the postprocessor -k, --keep-video Keep the video file on disk after the post- processing; the video is erased by default --no-post-overwrites Do not overwrite post-processed files; the post-processed files are overwritten by default --embed-subs Embed subtitles in the video (only for mp4, webm and mkv videos) --embed-thumbnail Embed thumbnail in the audio as cover art --add-metadata Write metadata to the video file --metadata-from-title FORMAT Parse additional metadata like song title / artist from the video title. The format syntax is the same as --output. Regular expression with named capture groups may also be used. The parsed parameters replace existing values. Example --metadata-from- title %(artist)s - %(title)s matches a title like Coldplay - Paradise . Example (regex) --metadata-from-title (?P artist .+?) - (?P title .+) --xattrs Write metadata to the video file s xattrs (using dublin core and xdg standards) --fixup POLICY Automatically correct known faults of the file. One of never (do nothing), warn (only emit a warning), detect_or_warn (the default; fix file if we can, warn otherwise) --prefer-avconv Prefer avconv over ffmpeg for running the postprocessors --prefer-ffmpeg Prefer ffmpeg over avconv for running the postprocessors (default) --ffmpeg-location PATH Location of the ffmpeg/avconv binary; either the path to the binary or its containing directory. --exec CMD Execute a command on the file after downloading and post-processing, similar to find s -exec syntax. Example --exec adb push {} /sdcard/Music/ rm {} --convert-subs FORMAT Convert the subtitles to other format (currently supported srt|ass|vtt|lrc) CONFIGURATION You can configure youtube-dl by placing any supported command line option to a configuration file. On Linux and macOS, the system wide configuration file is located at /etc/youtube-dl.conf and the user wide configuration file at ~/.config/youtube-dl/config. On Windows, the user wide configuration file locations are %APPDATA%\youtube-dl\config.txt or C \Users\ user name \youtube-dl.conf. Note that by default configuration file may not exist so you may need to create it yourself. For example, with the following configuration file youtube-dl will always extract the audio, not copy the mtime, use a proxy and save all videos under Movies directory in your home directory # Lines starting with # are comments # Always extract audio -x # Do not copy the mtime --no-mtime # Use this proxy --proxy 127.0.0.1 3128 # Save all videos under Movies directory in your home directory -o ~/Movies/%(title)s.%(ext)s Note that options in configuration file are just the same options aka switches used in regular command line calls thus there must be no whitespace after - or --, e.g. -o or --proxy but not - o or -- proxy. You can use --ignore-config if you want to disable the configuration file for a particular youtube-dl run. You can also use --config-location if you want to use custom configuration file for a particular youtube-dl run. Authentication with .netrc file You may also want to configure automatic credentials storage for extractors that support authentication (by providing login and password with --username and --password) in order not to pass credentials as command line arguments on every youtube-dl execution and prevent tracking plain text passwords in the shell command history. You can achieve this using a .netrc file on a per extractor basis. For that you will need to create a .netrc file in your $HOME and restrict permissions to read/write by only you touch $HOME/.netrc chmod a-rwx,u+rw $HOME/.netrc After that you can add credentials for an extractor in the following format, where extractor is the name of the extractor in lowercase machine extractor login login password password For example machine youtube login myaccount@gmail.com password my_youtube_password machine twitch login my_twitch_account_name password my_twitch_password To activate authentication with the .netrc file you should pass --netrc to youtube-dl or place it in the configuration file. On Windows you may also need to setup the %HOME% environment variable manually. For example set HOME=%USERPROFILE% OUTPUT TEMPLATE The -o option allows users to indicate a template for the output file names. tl;dr navigate me to examples. The basic usage is not to set any template arguments when downloading a single file, like in youtube-dl -o funny_video.flv https //some/video . However, it may contain special sequences that will be replaced when downloading each video. The special sequences may be formatted according to python string formatting operations. For example, %(NAME)s or %(NAME)05d. To clarify, that is a percent symbol followed by a name in parentheses, followed by formatting operations. Allowed names along with sequence type are id (string) Video identifier title (string) Video title url (string) Video URL ext (string) Video filename extension alt_title (string) A secondary title of the video display_id (string) An alternative identifier for the video uploader (string) Full name of the video uploader license (string) License name the video is licensed under creator (string) The creator of the video release_date (string) The date (YYYYMMDD) when the video was released timestamp (numeric) UNIX timestamp of the moment the video became available upload_date (string) Video upload date (YYYYMMDD) uploader_id (string) Nickname or id of the video uploader channel (string) Full name of the channel the video is uploaded on channel_id (string) Id of the channel location (string) Physical location where the video was filmed duration (numeric) Length of the video in seconds view_count (numeric) How many users have watched the video on the platform like_count (numeric) Number of positive ratings of the video dislike_count (numeric) Number of negative ratings of the video repost_count (numeric) Number of reposts of the video average_rating (numeric) Average rating give by users, the scale used depends on the webpage comment_count (numeric) Number of comments on the video age_limit (numeric) Age restriction for the video (years) is_live (boolean) Whether this video is a live stream or a fixed-length video start_time (numeric) Time in seconds where the reproduction should start, as specified in the URL end_time (numeric) Time in seconds where the reproduction should end, as specified in the URL format (string) A human-readable description of the format format_id (string) Format code specified by --format format_note (string) Additional info about the format width (numeric) Width of the video height (numeric) Height of the video resolution (string) Textual description of width and height tbr (numeric) Average bitrate of audio and video in KBit/s abr (numeric) Average audio bitrate in KBit/s acodec (string) Name of the audio codec in use asr (numeric) Audio sampling rate in Hertz vbr (numeric) Average video bitrate in KBit/s fps (numeric) Frame rate vcodec (string) Name of the video codec in use container (string) Name of the container format filesize (numeric) The number of bytes, if known in advance filesize_approx (numeric) An estimate for the number of bytes protocol (string) The protocol that will be used for the actual download extractor (string) Name of the extractor extractor_key (string) Key name of the extractor epoch (numeric) Unix epoch when creating the file autonumber (numeric) Five-digit number that will be increased with each download, starting at zero playlist (string) Name or id of the playlist that contains the video playlist_index (numeric) Index of the video in the playlist padded with leading zeros according to the total length of the playlist playlist_id (string) Playlist identifier playlist_title (string) Playlist title playlist_uploader (string) Full name of the playlist uploader playlist_uploader_id (string) Nickname or id of the playlist uploader Available for the video that belongs to some logical chapter or section chapter (string) Name or title of the chapter the video belongs to chapter_number (numeric) Number of the chapter the video belongs to chapter_id (string) Id of the chapter the video belongs to Available for the video that is an episode of some series or programme series (string) Title of the series or programme the video episode belongs to season (string) Title of the season the video episode belongs to season_number (numeric) Number of the season the video episode belongs to season_id (string) Id of the season the video episode belongs to episode (string) Title of the video episode episode_number (numeric) Number of the video episode within a season episode_id (string) Id of the video episode Available for the media that is a track or a part of a music album track (string) Title of the track track_number (numeric) Number of the track within an album or a disc track_id (string) Id of the track artist (string) Artist(s) of the track genre (string) Genre(s) of the track album (string) Title of the album the track belongs to album_type (string) Type of the album album_artist (string) List of all artists appeared on the album disc_number (numeric) Number of the disc or other physical medium the track belongs to release_year (numeric) Year (YYYY) when the album was released Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with NA. For example for -o %(title)s-%(id)s.%(ext)s and an mp4 video with title youtube-dl test video and id BaW_jenozKcj, this will result in a youtube-dl test video-BaW_jenozKcj.mp4 file created in the current directory. For numeric sequences you can use numeric related formatting, for example, %(view_count)05d will result in a string with view count padded with zeros up to 5 characters, like in 00042. Output templates can also contain arbitrary hierarchical path, e.g. -o %(playlist)s/%(playlist_index)s - %(title)s.%(ext)s which will result in downloading each video in a directory corresponding to this path template. Any missing directory will be automatically created for you. To use percent literals in an output template use %%. To output to stdout use -o -. The current default template is %(title)s-%(id)s.%(ext)s. In some cases, you don t want special characters such as 中, spaces, or , such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the --restrict-filenames flag to get a shorter title Output template and Windows batch files If you are using an output template inside a Windows batch file then you must escape plain percent characters (%) by doubling, so that -o %(title)s-%(id)s.%(ext)s should become -o %%(title)s-%%(id)s.%%(ext)s . However you should not touch % s that are not plain characters, e.g. environment variables for expansion should stay intact -o C \%HOMEPATH%\Desktop\%%(title)s.%%(ext)s . Output template examples Note that on Windows you may need to use double quotes instead of single. $ youtube-dl --get-filename -o %(title)s.%(ext)s BaW_jenozKc youtube-dl test video _ä↭𝕐.mp4 # All kinds of weird characters $ youtube-dl --get-filename -o %(title)s.%(ext)s BaW_jenozKc --restrict-filenames youtube-dl_test_video_.mp4 # A simple file name # Download YouTube playlist videos in separate directory indexed by video order in a playlist $ youtube-dl -o %(playlist)s/%(playlist_index)s - %(title)s.%(ext)s https //www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re # Download all playlists of YouTube channel/user keeping each playlist in separate directory $ youtube-dl -o %(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s https //www.youtube.com/user/TheLinuxFoundation/playlists # Download Udemy course keeping each chapter in separate directory under MyVideos directory in your home $ youtube-dl -u user -p password -o ~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s https //www.udemy.com/java-tutorial/ # Download entire series season keeping each series and each season in separate directory under C /MyVideos $ youtube-dl -o C /MyVideos/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s https //videomore.ru/kino_v_detalayah/5_sezon/367617 # Stream the video being downloaded to stdout $ youtube-dl -o - BaW_jenozKc FORMAT SELECTION By default youtube-dl tries to download the best available quality, i.e. if you want the best quality you don t need to pass any special options, youtube-dl will guess it for you by default. But sometimes you may want to download in a different format, for example when you are on a slow or intermittent connection. The key mechanism for achieving this is so-called format selection based on which you can explicitly specify desired format, select formats based on some criterion or criteria, setup precedence and much more. The general syntax for format selection is --format FORMAT or shorter -f FORMAT where FORMAT is a selector expression, i.e. an expression that describes format or formats you would like to download. tl;dr navigate me to examples. The simplest case is requesting a specific format, for example with -f 22 you can download the format with format code equal to 22. You can get the list of available format codes for particular video using --list-formats or -F. Note that these format codes are extractor specific. You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file, e.g. -f webm will download the best quality format with the webm extension served as a single file. You can also use special names to select particular edge case formats best Select the best quality format represented by a single file with video and audio. worst Select the worst quality format represented by a single file with video and audio. bestvideo Select the best quality video-only format (e.g. DASH video). May not be available. worstvideo Select the worst quality video-only format. May not be available. bestaudio Select the best quality audio only-format. May not be available. worstaudio Select the worst quality audio only-format. May not be available. For example, to download the worst quality video-only format you can use -f worstvideo. If you want to download multiple videos and they don t have the same formats available, you can specify the order of preference using slashes. Note that slash is left-associative, i.e. formats on the left hand side are preferred, for example -f 22/17/18 will download format 22 if it s available, otherwise it will download format 17 if it s available, otherwise it will download format 18 if it s available, otherwise it will complain that no suitable formats are available for download. If you want to download several formats of the same video use a comma as a separator, e.g. -f 22,17,18 will download all these three formats, of course if they are available. Or a more sophisticated example combined with the precedence feature -f 136/137/mp4/bestvideo,140/m4a/bestaudio. You can also filter the video formats by putting a condition in brackets, as in -f best[height=720] (or -f [filesize 10M] ). The following numeric meta fields can be used with comparisons , =, , =, = (equals), != (not equals) filesize The number of bytes, if known in advance width Width of the video, if known height Height of the video, if known tbr Average bitrate of audio and video in KBit/s abr Average audio bitrate in KBit/s vbr Average video bitrate in KBit/s asr Audio sampling rate in Hertz fps Frame rate Also filtering work for comparisons = (equals), ^= (starts with), $= (ends with), *= (contains) and following string meta fields ext File extension acodec Name of the audio codec in use vcodec Name of the video codec in use container Name of the container format protocol The protocol that will be used for the actual download, lower-case (http, https, rtsp, rtmp, rtmpe, mms, f4m, ism, http_dash_segments, m3u8, or m3u8_native) format_id A short description of the format Any string comparison may be prefixed with negation ! in order to produce an opposite comparison, e.g. !*= (does not contain). Note that none of the aforementioned meta fields are guaranteed to be present since this solely depends on the metadata obtained by particular extractor, i.e. the metadata offered by the video hoster. Formats for which the value is not known are excluded unless you put a question mark (?) after the operator. You can combine format filters, so -f [height =? 720][tbr 500] selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s. You can merge the video and audio of two formats into a single file using -f video-format + audio-format (requires ffmpeg or avconv installed), for example -f bestvideo+bestaudio will download the best video-only format, the best audio-only format and mux them together with ffmpeg/avconv. Format selectors can also be grouped using parentheses, for example if you want to download the best mp4 and webm formats with a height lower than 480 you can use -f (mp4,webm)[height 480] . Since the end of April 2015 and version 2015.04.26, youtube-dl uses -f bestvideo+bestaudio/best as the default format selection (see #5447, #5456). If ffmpeg or avconv are installed this results in downloading bestvideo and bestaudio separately and muxing them together into a single file giving the best overall quality available. Otherwise it falls back to best and results in downloading the best available quality served as a single file. best is also needed for videos that don t come from YouTube because they don t provide the audio and video in two different files. If you want to only download some DASH formats (for example if you are not interested in getting videos with a resolution higher than 1080p), you can add -f bestvideo[height =?1080]+bestaudio/best to your configuration file. Note that if you use youtube-dl to stream to stdout (and most likely to pipe it to your media player then), i.e. you explicitly specify output template as -o -, youtube-dl still uses -f best format selection in order to start content delivery immediately to your player and not to wait until bestvideo and bestaudio are downloaded and muxed. If you want to preserve the old format selection behavior (prior to youtube-dl 2015.04.26), i.e. you want to download the best available quality media served as a single file, you should explicitly specify your choice with -f best. You may want to add it to the configuration file in order not to type it every time you run youtube-dl. Format selection examples Note that on Windows you may need to use double quotes instead of single. # Download best mp4 format available or any other best if no mp4 available $ youtube-dl -f bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best # Download best format available but no better than 480p $ youtube-dl -f bestvideo[height =480]+bestaudio/best[height =480] # Download best video only format but no bigger than 50 MB $ youtube-dl -f best[filesize 50M] # Download best format available via direct link over HTTP/HTTPS protocol $ youtube-dl -f (bestvideo+bestaudio/best)[protocol^=http] # Download the best video format and the best audio format without merging them $ youtube-dl -f bestvideo,bestaudio -o %(title)s.f%(format_id)s.%(ext)s Note that in the last example, an output template is recommended as bestvideo and bestaudio may have the same file name. VIDEO SELECTION Videos can be filtered by their upload date using the options --date, --datebefore or --dateafter. They accept dates in two formats Absolute dates Dates in the format YYYYMMDD. Relative dates Dates in the format (now|today)[+-][0-9](day|week|month|year)(s)? Examples # Download only the videos uploaded in the last 6 months $ youtube-dl --dateafter now-6months # Download only the videos uploaded on January 1, 1970 $ youtube-dl --date 19700101 $ # Download only the videos uploaded in the 200x decade $ youtube-dl --dateafter 20000101 --datebefore 20091231 FAQ How do I update youtube-dl? If you ve followed our manual installation instructions, you can simply run youtube-dl -U (or, on Linux, sudo youtube-dl -U). If you have used pip, a simple sudo pip install -U youtube-dl is sufficient to update. If you have installed youtube-dl using a package manager like apt-get or yum, use the standard system update mechanism to update. Note that distribution packages are often outdated. As a rule of thumb, youtube-dl releases at least once a month, and often weekly or even daily. Simply go to https //yt-dl.org to find out the current version. Unfortunately, there is nothing we youtube-dl developers can do if your distribution serves a really outdated version. You can (and should) complain to your distribution in their bugtracker or support forum. As a last resort, you can also uninstall the version installed by your package manager and follow our manual installation instructions. For that, remove the distribution s package, with a line like sudo apt-get remove -y youtube-dl Afterwards, simply follow our manual installation instructions sudo wget https //yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl sudo chmod a+rx /usr/local/bin/youtube-dl hash -r Again, from then on you ll be able to update with sudo youtube-dl -U. youtube-dl is extremely slow to start on Windows Add a file exclusion for youtube-dl.exe in Windows Defender settings. I m getting an error Unable to extract OpenGraph title on YouTube playlists YouTube changed their playlist format in March 2014 and later on, so you ll need at least youtube-dl 2014.07.25 to download all YouTube videos. If you have installed youtube-dl with a package manager, pip, setup.py or a tarball, please use that to update. Note that Ubuntu packages do not seem to get updated anymore. Since we are not affiliated with Ubuntu, there is little we can do. Feel free to report bugs to the Ubuntu packaging people - all they have to do is update the package to a somewhat recent version. See above for a way to update. I m getting an error when trying to use output template error using output template conflicts with using title, video ID or auto number Make sure you are not using -o with any of these options -t, --title, --id, -A or --auto-number set in command line or in a configuration file. Remove the latter if any. Do I always have to pass -citw? By default, youtube-dl intends to have the best options (incidentally, if you have a convincing case that these should be different, please file an issue where you explain that). Therefore, it is unnecessary and sometimes harmful to copy long option strings from webpages. In particular, the only option out of -citw that is regularly useful is -i. Can you please put the -b option back? Most people asking this question are not aware that youtube-dl now defaults to downloading the highest available quality as reported by YouTube, which will be 1080p or 720p in some cases, so you no longer need the -b option. For some specific videos, maybe YouTube does not report them to be available in a specific high quality format you re interested in. In that case, simply request it with the -f option and youtube-dl will try to download it. I get HTTP error 402 when trying to download a video. What s this? Apparently YouTube requires you to pass a CAPTCHA test if you download too much. We re considering to provide a way to let you solve the CAPTCHA, but at the moment, your best course of action is pointing a web browser to the youtube URL, solving the CAPTCHA, and restart youtube-dl. Do I need any other programs? youtube-dl works fine on its own on most sites. However, if you want to convert video/audio, you ll need avconv or ffmpeg. On some sites - most notably YouTube - videos can be retrieved in a higher quality format without sound. youtube-dl will detect whether avconv/ffmpeg is present and automatically pick the best option. Videos or video formats streamed via RTMP protocol can only be downloaded when rtmpdump is installed. Downloading MMS and RTSP videos requires either mplayer or mpv to be installed. I have downloaded a video but how can I play it? Once the video is fully downloaded, use any video player, such as mpv, vlc or mplayer. I extracted a video URL with -g, but it does not play on another machine / in my web browser. It depends a lot on the service. In many cases, requests for the video (to download/play it) must come from the same IP address and with the same cookies and/or HTTP headers. Use the --cookies option to write the required cookies into a file, and advise your downloader to read cookies from that file. Some sites also require a common user agent to be used, use --dump-user-agent to see the one in use by youtube-dl. You can also get necessary cookies and HTTP headers from JSON output obtained with --dump-json. It may be beneficial to use IPv6; in some cases, the restrictions are only applied to IPv4. Some services (sometimes only for a subset of videos) do not restrict the video URL by IP address, cookie, or user-agent, but these are the exception rather than the rule. Please bear in mind that some URL protocols are not supported by browsers out of the box, including RTMP. If you are using -g, your own downloader must support these as well. If you want to play the video on a machine that is not running youtube-dl, you can relay the video content from the machine that runs youtube-dl. You can use -o - to let youtube-dl stream a video to stdout, or simply allow the player to download the files written by youtube-dl in turn. ERROR no fmt_url_map or conn information found in video info YouTube has switched to a new video info format in July 2011 which is not supported by old versions of youtube-dl. See above for how to update youtube-dl. ERROR unable to download video YouTube requires an additional signature since September 2012 which is not supported by old versions of youtube-dl. See above for how to update youtube-dl. Video URL contains an ampersand and I m getting some strange output [1] 2839 or v is not recognized as an internal or external command That s actually the output from your shell. Since ampersand is one of the special shell characters it s interpreted by the shell preventing you from passing the whole URL to youtube-dl. To disable your shell from interpreting the ampersands (or any other special characters) you have to either put the whole URL in quotes or escape them with a backslash (which approach will work depends on your shell). For example if your URL is https //www.youtube.com/watch?t=4 v=BaW_jenozKc you should end up with following command youtube-dl https //www.youtube.com/watch?t=4 v=BaW_jenozKc or youtube-dl https //www.youtube.com/watch?t=4\ v=BaW_jenozKc For Windows you have to use the double quotes youtube-dl https //www.youtube.com/watch?t=4 v=BaW_jenozKc ExtractorError Could not find JS function u OF In February 2015, the new YouTube player contained a character sequence in a string that was misinterpreted by old versions of youtube-dl. See above for how to update youtube-dl. HTTP Error 429 Too Many Requests or 402 Payment Required These two error codes indicate that the service is blocking your IP address because of overuse. Usually this is a soft block meaning that you can gain access again after solving CAPTCHA. Just open a browser and solve a CAPTCHA the service suggests you and after that pass cookies to youtube-dl. Note that if your machine has multiple external IPs then you should also pass exactly the same IP you ve used for solving CAPTCHA with --source-address. Also you may need to pass a User-Agent HTTP header of your browser with --user-agent. If this is not the case (no CAPTCHA suggested to solve by the service) then you can contact the service and ask them to unblock your IP address, or - if you have acquired a whitelisted IP address already - use the --proxy or --source-address options to select another IP address. SyntaxError Non-ASCII character The error File youtube-dl , line 2 SyntaxError Non-ASCII character \x93 ... means you re using an outdated version of Python. Please update to Python 2.6 or 2.7. What is this binary file? Where has the code gone? Since June 2012 (#342) youtube-dl is packed as an executable zipfile, simply unzip it (might need renaming to youtube-dl.zip first on some systems) or clone the git repository, as laid out above. If you modify the code, you can run it by executing the __main__.py file. To recompile the executable, run make youtube-dl. The exe throws an error due to missing MSVCR100.dll To run the exe you need to install first the Microsoft Visual C++ 2010 Redistributable Package (x86). On Windows, how should I set up ffmpeg and youtube-dl? Where should I put the exe files? If you put youtube-dl and ffmpeg in the same directory that you re running the command from, it will work, but that s rather cumbersome. To make a different directory work - either for ffmpeg, or for youtube-dl, or for both - simply create the directory (say, C \bin, or C \Users\ User name \bin), put all the executables directly in there, and then set your PATH environment variable to include that directory. From then on, after restarting your shell, you will be able to access both youtube-dl and ffmpeg (and youtube-dl will be able to find ffmpeg) by simply typing youtube-dl or ffmpeg, no matter what directory you re in. How do I put downloads into a specific folder? Use the -o to specify an output template, for example -o /home/user/videos/%(title)s-%(id)s.%(ext)s . If you want this for all of your downloads, put the option into your configuration file. How do I download a video starting with a -? Either prepend https //www.youtube.com/watch?v= or separate the ID from the options with -- youtube-dl -- -wNyEUrxzFU youtube-dl https //www.youtube.com/watch?v=-wNyEUrxzFU How do I pass cookies to youtube-dl? Use the --cookies option, for example --cookies /path/to/cookies/file.txt. In order to extract cookies from browser use any conforming browser extension for exporting cookies. For example, cookies.txt (for Chrome) or cookies.txt (for Firefox). Note that the cookies file must be in Mozilla/Netscape format and the first line of the cookies file must be either # HTTP Cookie File or # Netscape HTTP Cookie File. Make sure you have correct newline format in the cookies file and convert newlines if necessary to correspond with your OS, namely CRLF (\r\n) for Windows and LF (\n) for Unix and Unix-like systems (Linux, macOS, etc.). HTTP Error 400 Bad Request when using --cookies is a good sign of invalid newline format. Passing cookies to youtube-dl is a good way to workaround login when a particular extractor does not implement it explicitly. Another use case is working around CAPTCHA some websites require you to solve in particular cases in order to get access (e.g. YouTube, CloudFlare). How do I stream directly to media player? You will first need to tell youtube-dl to stream media to stdout with -o -, and also tell your media player to read from stdin (it must be capable of this for streaming) and then pipe former to latter. For example, streaming to vlc can be achieved with youtube-dl -o - https //www.youtube.com/watch?v=BaW_jenozKcj | vlc - How do I download only new videos from a playlist? Use download-archive feature. With this feature you should initially download the complete playlist with --download-archive /path/to/download/archive/file.txt that will record identifiers of all the videos in a special file. Each subsequent run with the same --download-archive will download only new videos and skip all videos that have been downloaded before. Note that only successful downloads are recorded in the file. For example, at first, youtube-dl --download-archive archive.txt https //www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re will download the complete PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re playlist and create a file archive.txt. Each subsequent run will only download new videos if any youtube-dl --download-archive archive.txt https //www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re Should I add --hls-prefer-native into my config? When youtube-dl detects an HLS video, it can download it either with the built-in downloader or ffmpeg. Since many HLS streams are slightly invalid and ffmpeg/youtube-dl each handle some invalid cases better than the other, there is an option to switch the downloader if needed. When youtube-dl knows that one particular downloader works better for a given website, that downloader will be picked. Otherwise, youtube-dl will pick the best downloader for general compatibility, which at the moment happens to be ffmpeg. This choice may change in future versions of youtube-dl, with improvements of the built-in downloader and/or ffmpeg. In particular, the generic extractor (used when your website is not in the list of supported sites by youtube-dl cannot mandate one specific downloader. If you put either --hls-prefer-native or --hls-prefer-ffmpeg into your configuration, a different subset of videos will fail to download correctly. Instead, it is much better to file an issue or a pull request which details why the native or the ffmpeg HLS downloader is a better choice for your use case. Can you add support for this anime video site, or site which shows current movies for free? As a matter of policy (as well as legality), youtube-dl does not include support for services that specialize in infringing copyright. As a rule of thumb, if you cannot easily find a video that the service is quite obviously allowed to distribute (i.e. that has been uploaded by the creator, the creator s distributor, or is published under a free license), the service is probably unfit for inclusion to youtube-dl. A note on the service that they don t host the infringing content, but just link to those who do, is evidence that the service should not be included into youtube-dl. The same goes for any DMCA note when the whole front page of the service is filled with videos they are not allowed to distribute. A "fair use" note is equally unconvincing if the service shows copyright-protected videos in full without authorization. Support requests for services that do purchase the rights to distribute their content are perfectly fine though. If in doubt, you can simply include a source that mentions the legitimate purchase of content. How can I speed up work on my issue? (Also known as Help, my important issue not being solved!) The youtube-dl core developer team is quite small. While we do our best to solve as many issues as possible, sometimes that can take quite a while. To speed up your issue, here s what you can do First of all, please do report the issue at our issue tracker. That allows us to coordinate all efforts by users and developers, and serves as a unified point. Unfortunately, the youtube-dl project has grown too large to use personal email as an effective communication channel. Please read the bug reporting instructions below. A lot of bugs lack all the necessary information. If you can, offer proxy, VPN, or shell access to the youtube-dl developers. If you are able to, test the issue from multiple computers in multiple countries to exclude local censorship or misconfiguration issues. If nobody is interested in solving your issue, you are welcome to take matters into your own hands and submit a pull request (or coerce/pay somebody else to do so). Feel free to bump the issue from time to time by writing a small comment ("Issue is still present in youtube-dl version ...from France, but fixed from Belgium"), but please not more than once a month. Please do not declare your issue as important or urgent. How can I detect whether a given URL is supported by youtube-dl? For one, have a look at the list of supported sites. Note that it can sometimes happen that the site changes its URL scheme (say, from https //example.com/video/1234567 to https //example.com/v/1234567 ) and youtube-dl reports an URL of a service in that list as unsupported. In that case, simply report a bug. It is not possible to detect whether a URL is supported or not. That s because youtube-dl contains a generic extractor which matches all URLs. You may be tempted to disable, exclude, or remove the generic extractor, but the generic extractor not only allows users to extract videos from lots of websites that embed a video from another service, but may also be used to extract video from a service that it s hosting itself. Therefore, we neither recommend nor support disabling, excluding, or removing the generic extractor. If you want to find out whether a given URL is supported, simply call youtube-dl with it. If you get no videos back, chances are the URL is either not referring to a video or unsupported. You can find out which by examining the output (if you run youtube-dl on the console) or catching an UnsupportedError exception if you run it from a Python program. Why do I need to go through that much red tape when filing bugs? Before we had the issue template, despite our extensive bug reporting instructions, about 80% of the issue reports we got were useless, for instance because people used ancient versions hundreds of releases old, because of simple syntactic errors (not in youtube-dl but in general shell usage), because the problem was already reported multiple times before, because people did not actually read an error message, even if it said "please install ffmpeg", because people did not mention the URL they were trying to download and many more simple, easy-to-avoid problems, many of whom were totally unrelated to youtube-dl. youtube-dl is an open-source project manned by too few volunteers, so we d rather spend time fixing bugs where we are certain none of those simple problems apply, and where we can be reasonably confident to be able to reproduce the issue without asking the reporter repeatedly. As such, the output of youtube-dl -v YOUR_URL_HERE is really all that s required to file an issue. The issue template also guides you through some basic steps you can do, such as checking that your version of youtube-dl is current. DEVELOPER INSTRUCTIONS Most users do not need to build youtube-dl and can download the builds or get them from their distribution. To run youtube-dl as a developer, you don t need to build anything either. Simply execute python -m youtube_dl To run the test, simply invoke your favorite test runner, or execute a test file directly; any of the following work python -m unittest discover python test/test_download.py nosetests See item 6 of new extractor tutorial for how to run extractor specific test cases. If you want to create a build of youtube-dl yourself, you ll need python make (only GNU make is supported) pandoc zip nosetests Adding support for a new site If you want to add support for a new site, first of all make sure this site is not dedicated to copyright infringement. youtube-dl does not support such sites thus pull requests adding support for them will be rejected. After you have ensured this site is distributing its content legally, you can follow this quick list (assuming your service is called yourextractor) Fork this repository Check out the source code with git clone git@github.com YOUR_GITHUB_USERNAME/youtube-dl.git Start a new git branch with cd youtube-dl git checkout -b yourextractor Start with this simple template and save it to youtube_dl/extractor/yourextractor.py # coding utf-8 from __future__ import unicode_literals from .common import InfoExtractor class YourExtractorIE(InfoExtractor) _VALID_URL = r https? //(? www\.)?yourextractor\.com/watch/(?P id [0-9]+) _TEST = { url https //yourextractor.com/watch/42 , md5 TODO md5 sum of the first 10241 bytes of the video file (use --test) , info_dict { id 42 , ext mp4 , title Video title goes here , thumbnail r re ^https? //.*\.jpg$ , # TODO more properties, either as # * A value # * MD5 checksum; start the string with md5 # * A regular expression; start the string with re # * Any Python type (for example int or float) } } def _real_extract(self, url) video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) # TODO more code goes here, for example ... title = self._html_search_regex(r h1 (.+?) /h1 , webpage, title ) return { id video_id, title title, description self._og_search_description(webpage), uploader self._search_regex(r div[^ ]+id= uploader [^ ]* ([^ ]+) , webpage, uploader , fatal=False), # TODO more properties (see youtube_dl/extractor/common.py) } Add an import in youtube_dl/extractor/extractors.py. Run python test/test_download.py TestDownload.test_YourExtractor. This should fail at first, but you can continually re-run it until you re done. If you decide to add more than one test, then rename _TEST to _TESTS and make it into a list of dictionaries. The tests will then be named TestDownload.test_YourExtractor, TestDownload.test_YourExtractor_1, TestDownload.test_YourExtractor_2, etc. Note that tests with only_matching key in test s dict are not counted in. Have a look at youtube_dl/extractor/common.py for possible helper methods and a detailed description of what your extractor should and may return. Add tests and code for as many as you want. Make sure your code follows youtube-dl coding conventions and check the code with flake8 $ flake8 youtube_dl/extractor/yourextractor.py Make sure your code works under all Python versions claimed supported by youtube-dl, namely 2.6, 2.7, and 3.2+. When the tests pass, add the new files and commit them and push the result, like this $ git add youtube_dl/extractor/extractors.py $ git add youtube_dl/extractor/yourextractor.py $ git commit -m [yourextractor] Add new extractor $ git push origin yourextractor Finally, create a pull request. We ll then review and merge it. In any case, thank you very much for your contributions! youtube-dl coding conventions This section introduces a guide lines for writing idiomatic, robust and future-proof extractor code. Extractors are very fragile by nature since they depend on the layout of the source data provided by 3rd party media hosters out of your control and this layout tends to change. As an extractor implementer your task is not only to write code that will extract media links and metadata correctly but also to minimize dependency on the source s layout and even to make the code foresee potential future changes and be ready for that. This is important because it will allow the extractor not to break on minor layout changes thus keeping old youtube-dl versions working. Even though this breakage issue is easily fixed by emitting a new version of youtube-dl with a fix incorporated, all the previous versions become broken in all repositories and distros packages that may not be so prompt in fetching the update from us. Needless to say, some non rolling release distros may never receive an update at all. Mandatory and optional metafields For extraction to work youtube-dl relies on metadata your extractor extracts and provides to youtube-dl expressed by an information dictionary or simply info dict. Only the following meta fields in the info dict are considered mandatory for a successful extraction process by youtube-dl id (media identifier) title (media title) url (media download URL) or formats In fact only the last option is technically mandatory (i.e. if you can t figure out the download location of the media the extraction does not make any sense). But by convention youtube-dl also treats id and title as mandatory. Thus the aforementioned metafields are the critical data that the extraction does not make any sense without and if any of them fail to be extracted then the extractor is considered completely broken. Any field apart from the aforementioned ones are considered optional. That means that extraction should be tolerant to situations when sources for these fields can potentially be unavailable (even if they are always available at the moment) and future-proof in order not to break the extraction of general purpose mandatory fields. Example Say you have some source dictionary meta that you ve fetched as JSON with HTTP request and it has a key summary meta = self._download_json(url, video_id) Assume at this point meta s layout is { ... summary some fancy summary text , ... } Assume you want to extract summary and put it into the resulting info dict as description. Since description is an optional meta field you should be ready that this key may be missing from the meta dict, so that you should extract it like description = meta.get( summary ) # correct and not like description = meta[ summary ] # incorrect The latter will break extraction process with KeyError if summary disappears from meta at some later time but with the former approach extraction will just go ahead with description set to None which is perfectly fine (remember None is equivalent to the absence of data). Similarly, you should pass fatal=False when extracting optional data from a webpage with _search_regex, _html_search_regex or similar methods, for instance description = self._search_regex( r span[^ ]+id= title [^ ]* ([^ ]+) , webpage, description , fatal=False) With fatal set to False if _search_regex fails to extract description it will emit a warning and continue extraction. You can also pass default= some fallback value , for example description = self._search_regex( r span[^ ]+id= title [^ ]* ([^ ]+) , webpage, description , default=None) On failure this code will silently continue the extraction with description set to None. That is useful for metafields that may or may not be present. Provide fallbacks When extracting metadata try to do so from multiple sources. For example if title is present in several places, try extracting from at least some of them. This makes it more future-proof in case some of the sources become unavailable. Example Say meta from the previous example has a title and you are about to extract it. Since title is a mandatory meta field you should end up with something like title = meta[ title ] If title disappears from meta in future due to some changes on the hoster s side the extraction would fail since title is mandatory. That s expected. Assume that you have some another source you can extract title from, for example og title HTML meta of a webpage. In this case you can provide a fallback scenario title = meta.get( title ) or self._og_search_title(webpage) This code will try to extract from meta first and if it fails it will try extracting og title from a webpage. Regular expressions Don t capture groups you don t use Capturing group must be an indication that it s used somewhere in the code. Any group that is not used must be non capturing. Example Don t capture id attribute name here since you can t use it for anything anyway. Correct r (? id|ID)=(?P id \d+) Incorrect r (id|ID)=(?P id \d+) Make regular expressions relaxed and flexible When using regular expressions try to write them fuzzy, relaxed and flexible, skipping insignificant parts that are more likely to change, allowing both single and double quotes for quoted values and so on. Example Say you need to extract title from the following HTML code span style= position absolute; left 910px; width 90px; float right; z-index 9999; class= title some fancy title /span The code for that task should look similar to title = self._search_regex( r span[^ ]+class= title [^ ]* ([^ ]+) , webpage, title ) Or even better title = self._search_regex( r span[^ ]+class=([ \ ])title\1[^ ]* (?P title [^ ]+) , webpage, title , group= title ) Note how you tolerate potential changes in the style attribute s value or switch from using double quotes to single for class attribute The code definitely should not look like title = self._search_regex( r span style= position absolute; left 910px; width 90px; float right; z-index 9999; class= title (.*?) /span , webpage, title , group= title ) Long lines policy There is a soft limit to keep lines of code under 80 characters long. This means it should be respected if possible and if it does not make readability and code maintenance worse. For example, you should never split long string literals like URLs or some other often copied entities over multiple lines to fit this limit Correct https //www.youtube.com/watch?v=FqZTN594JQw list=PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4 Incorrect https //www.youtube.com/watch?v=FqZTN594JQw list= PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4 Inline values Extracting variables is acceptable for reducing code duplication and improving readability of complex expressions. However, you should avoid extracting variables used only once and moving them to opposite parts of the extractor file, which makes reading the linear flow difficult. Example Correct title = self._html_search_regex(r title ([^ ]+) /title , webpage, title ) Incorrect TITLE_RE = r title ([^ ]+) /title # ...some lines of code... title = self._html_search_regex(TITLE_RE, webpage, title ) Collapse fallbacks Multiple fallback values can quickly become unwieldy. Collapse multiple fallback values into a single expression via a list of patterns. Example Good description = self._html_search_meta( [ og description , description , twitter description ], webpage, description , default=None) Unwieldy description = ( self._og_search_description(webpage, default=None) or self._html_search_meta( description , webpage, default=None) or self._html_search_meta( twitter description , webpage, default=None)) Methods supporting list of patterns are _search_regex, _html_search_regex, _og_search_property, _html_search_meta. Trailing parentheses Always move trailing parentheses after the last argument. Example Correct lambda x x[ ResultSet ][ Result ][0][ VideoUrlSet ][ VideoUrl ], list) Incorrect lambda x x[ ResultSet ][ Result ][0][ VideoUrlSet ][ VideoUrl ], list, ) Use convenience conversion and parsing functions Wrap all extracted numeric data into safe functions from youtube_dl/utils.py int_or_none, float_or_none. Use them for string to number conversions as well. Use url_or_none for safe URL processing. Use try_get for safe metadata extraction from parsed JSON. Use unified_strdate for uniform upload_date or any YYYYMMDD meta field extraction, unified_timestamp for uniform timestamp extraction, parse_filesize for filesize extraction, parse_count for count meta fields extraction, parse_resolution, parse_duration for duration extraction, parse_age_limit for age_limit extraction. Explore youtube_dl/utils.py for more useful convenience functions. More examples Safely extract optional description from parsed JSON description = try_get(response, lambda x x[ result ][ video ][0][ summary ], compat_str) Safely extract more optional metadata video = try_get(response, lambda x x[ result ][ video ][0], dict) or {} description = video.get( summary ) duration = float_or_none(video.get( durationMs ), scale=1000) view_count = int_or_none(video.get( views )) EMBEDDING YOUTUBE-DL youtube-dl makes the best effort to be a good command-line program, and thus should be callable from any programming language. If you encounter any problems parsing its output, feel free to create a report. From a Python program, you can embed youtube-dl in a more powerful fashion, like this from __future__ import unicode_literals import youtube_dl ydl_opts = {} with youtube_dl.YoutubeDL(ydl_opts) as ydl ydl.download([ https //www.youtube.com/watch?v=BaW_jenozKc ]) Most likely, you ll want to use various options. For a list of options available, have a look at youtube_dl/YoutubeDL.py. For a start, if you want to intercept youtube-dl s output, set a logger object. Here s a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file from __future__ import unicode_literals import youtube_dl class MyLogger(object) def debug(self, msg) pass def warning(self, msg) pass def error(self, msg) print(msg) def my_hook(d) if d[ status ] == finished print( Done downloading, now converting ... ) ydl_opts = { format bestaudio/best , postprocessors [{ key FFmpegExtractAudio , preferredcodec mp3 , preferredquality 192 , }], logger MyLogger(), progress_hooks [my_hook], } with youtube_dl.YoutubeDL(ydl_opts) as ydl ydl.download([ https //www.youtube.com/watch?v=BaW_jenozKc ]) BUGS Bugs and suggestions should be reported at https //github.com/ytdl-org/youtube-dl/issues. Unless you were prompted to or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in the IRC channel #youtube-dl on freenode (webchat). Please include the full output of youtube-dl when run with -v, i.e. add -v flag to your command line, copy the whole output and post it in the issue body wrapped in ``` for better formatting. It should look similar to this $ youtube-dl -v your command line [debug] System config [] [debug] User config [] [debug] Command-line args [u -v , u https //www.youtube.com/watch?v=BaW_jenozKcj ] [debug] Encodings locale cp1251, fs mbcs, out cp866, pref cp1251 [debug] youtube-dl version 2015.12.06 [debug] Git HEAD 135392e [debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2 [debug] exe versions ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4 [debug] Proxy map {} ... Do not post screenshots of verbose logs; only plain text is acceptable. The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever. Please re-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist) Is the description of the issue itself sufficient? We often get issue reports that we cannot really decipher. While in most cases we eventually get the required information after asking back multiple times, this poses an unnecessary drain on our resources. Many contributors, including myself, are also not native speakers, so we may misread some parts. So please elaborate on what feature you are requesting, or what bug you want to be fixed. Make sure that it s obvious What the problem is How it could be fixed How your proposed solution would look like If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We re often too polite to close the issue outright, but the missing info makes misinterpretation likely. As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over. For bug reports, this means that your report should contain the complete output of youtube-dl when called with the -v flag. The error message you get for (most) bugs even says so, but you would not believe how many of our bug reports do not contain this information. If your server has multiple IPs or you suspect censorship, adding --call-home may be a good idea to get more diagnostics. If the error is ERROR Unable to extract ... and you cannot reproduce it from multiple countries, add --dump-pages (warning this will yield a rather large output, redirect it to the file log.txt by adding log.txt 2 1 to your command-line) or upload the .dump files you get when you add --write-pages somewhere. Site support requests must contain an example URL. An example URL is a URL you might want to download, like https //www.youtube.com/watch?v=BaW_jenozKc. There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. https //www.youtube.com/) is not an example URL. Are you using the latest version? Before reporting any issue, type youtube-dl -U. This should report that you re up-to-date. About 20% of the reports we receive are already fixed, but people are using outdated versions. This goes for feature requests as well. Is the issue already documented? Make sure that someone has not already opened the issue you re trying to open. Search at the top of the window or browse the GitHub Issues of this repository. If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue ...". While some issues may be old, a new post into them often spurs rapid activity. Why are existing options not enough? Before requesting a new feature, please have a quick peek at the list of supported options. Many feature requests are for features that actually exist already! Please, absolutely do show off your work in the issue report and detail how the existing similar options do not solve your problem. Is there enough context in your bug report? People want to solve problems, and often think they do us a favor by breaking down their larger problems (e.g. wanting to skip already downloaded files) to a specific request (e.g. requesting us to look whether the file exists before downloading the info page). However, what often happens is that they break down the problem into two steps One simple, and one impossible (or extremely complicated one). We are then presented with a very complicated request when the original problem could be solved far easier, e.g. by recording the downloaded video IDs in a separate file. To avoid this, you must include the greater context where it is non-obvious. In particular, every feature request that does not consist of adding support for a new site should contain a use case scenario that explains in what situation the missing feature would be useful. Does the issue involve one problem, and one problem only? Some of our users seem to think there is a limit of issues they can or should open. There is no limit of issues they can or should open. While it may seem appealing to be able to dump all your issues into one ticket, that means that someone who solves one of your issues cannot mark the issue as closed. Typically, reporting a bunch of issues leads to the ticket lingering since nobody wants to attack that behemoth, until someone mercifully splits the issue into multiple ones. In particular, every site support request issue should only pertain to services at one site (generally under a common domain, but always using the same backend technology). Do not request support for vimeo user videos, White house podcasts, and Google Plus pages in the same issue. Also, make sure that you don t post bug reports alongside feature requests. As a rule of thumb, a feature request does not include outputs of youtube-dl that are not immediately related to the feature at hand. Do not post reports of a network error alongside the request for a new video service. Is anyone going to need the feature? Only post features that you (or an incapacitated friend you can personally talk to) require. Do not post features because they seem like a good idea. If they are really useful, they will be requested by someone who requires them. Is your question about youtube-dl? It may sound strange, but some bug reports we receive are completely unrelated to youtube-dl and relate to a different, or even the reporter s own, application. Please make sure that you are actually using youtube-dl. If you are using a UI for youtube-dl, report the bug to the maintainer of the actual application providing the UI. On the other hand, if your UI for youtube-dl fails in some way you believe is related to youtube-dl, by all means, go ahead and report the bug. COPYRIGHT youtube-dl is released into the public domain by the copyright holders. This README file was originally written by Daniel Bolton and is likewise released into the public domain.
https://w.atwiki.jp/juria/pages/76.html
Streamripper win32 console MyWiki より転記[2007-10-09][2006-05-23] 以下は ver.1.61.19 についての記述です。 (2007-10-09 時点の最新ヴァージョンは 1.62.2) http //streamripper.sourceforge.net/index.php ネットラジオを録音。(単一ファイル + cue シート、トラック別) SHOUTcast , Icecast , Tuner2 対応。AACの放送が増えましたね。 Streamripper winamp 2/5 plugin は有名ですが、敢えてコンソール版 GUI 版 StreamRipper32 は SHOUTcast のジャンル検索が可能。 ストリームの IP が 403 Forbidden になる場合は、Option の User Agentを 空白に。 コンソール版Usage 拡張子はストリーミングにより自動で付けられる(.mp3/.aac/.ogg) streamripper URL [OPTIONS] -h - Print this listing -v - Print version info and quit -a [file] - Rip to single file, default name is timestamped -A - Don t write individual tracks -d dir - The destination directory -D pattern - Write files using specified pattern %S Stream %A Artist %T Title %a Album %D Date and time (per song) %d Date and time (per execution) %q Sequence number (automatic detection) %Nq Sequence number (starting from number N) %% Percent sign("%%S/%%A/%%T") -s - Don t create a directory for each stream -r [[ip ]port] - Create relay server on base ip port, default port 8000 -R #connect - Max connections to relay, default 1, -R 0 is no limit -L file - Create a relay playlist file -z - Don t scan for free ports if base port is not avail -p url - Use HTTP proxy server at url -o always - Always overwrite tracks in complete -o never - Never overwrite tracks in complete -t - Don t overwrite tracks in incomplete -c - Don t auto-reconnect -l seconds - Number of seconds to run, otherwise runs forever -M megabytes - Stop ripping after this many megabytes -q [start] - Add sequence number to output file -i - Don t add ID3 tags to output file -u useragent - Use a different UserAgent than "Streamripper" -w rulefile - Parse metadata using rules in file. -m timeout - Number of seconds before force-closing stalled conn -k count - Skip over first count tracks before starting to rip -T - Truncate duplicated tracks in incomplete -E command - Run external command to fetch metadata --quiet - Don t print ripping status to console --debug - Save debugging trace --xs_??? - Invoke splitpoint detection rules (see README/man page) Tutorial (console) Documentation や同梱の README を参考に ストリーミングをトラック別に録音 streamripper URL ストリーミングを一つのファイルとしてリッピング、cue シートを作成 streamripper URL -a (ファイル名はタイムスタンプから付けられ、トラック別のファイルも作成される。 トラック別ファイル名は、アーティスト名 - 曲名) トラック別のファイルを作成したくない時は、-A を追加 streamripper URL -a [filename] -A 出力先フォルダを指定 streamripper URL -d /music/stream -s (-s : stream ごとにフォルダを作らない) フォルダ名やディレクトリ構成を指定したい streamripper URL -D %A/%T (-A 付加時には無効。デフォルトのフォルダ名は stream 名) 最初の n 曲をスキップしてリッピングを開始する streamripper URL -a -k n (-A 付加時には無効。) cueシートとシングルファイルは日付時刻をファイル名に。 トラック別ファイルは日付時刻名のフォルダ内に出力し、ファイル名は [連番-アーティスト名-タイトル]、1曲目をスキップ。 streamripper URL -a %d -D %d/%1q-%A-%T -k 1 -
https://w.atwiki.jp/fairstreams/pages/47.html
この記事は荒らし対策の最終手段として作成されたものです。公的秩序に反する投稿内容は削除することがございますので、ご了承下さい。また客観性を確保するため、可能な限り記事の出展元を記載してください。 Sound stream or 音のストリーム is an English education material promoted by Keizo Sakurai (桜井恵三◆aRZpjQmYwQ) Definition According to Sakurai, sound stream stands for consecutively changing sound stream , which clearly shows that the definition of the term is yet to be provided for. Thus, it should be well stated that his usage of the word, sound stream, has no apparent relationship to the term sound stream proposed by Prof. Minematsu. (The reason why the two fellows came up with the same expression should be considered as a mere coincidence.)
https://w.atwiki.jp/coinwiki/pages/53.html
This is a multi-threaded multi-pool FPGA and ASIC miner for bitcoin. This code is provided entirely free of charge by the programmer in his spare time so donations would be greatly appreciated. Please consider donating to the address below. Con Kolivas kernel@kolivas.org 15qSxP1SQcUX3o4nhkfdbgyoWEFMomJ4rZ DOWNLOADS http //ck.kolivas.org/apps/cgminer GIT TREE https //github.com/ckolivas/cgminer Support thread http //bitcointalk.org/index.php?topic=28402.0 IRC Channel irc //irc.freenode.net/cgminer License GPLv3. See COPYING for details. SEE ALSO API-README, ASIC-README and FGPA-README FOR MORE INFORMATION ON EACH. EXECUTIVE SUMMARY ON USAGE Single pool cgminer -o http //pool port -u username -p password Multiple pools cgminer -o http //pool1 port -u pool1username -p pool1password -o http //pool2 port -u pool2usernmae -p pool2password Single pool with a standard http proxy cgminer -o "http proxy port|http //pool port" -u username -p password Single pool with a socks5 proxy cgminer -o "socks5 proxy port|http //pool port" -u username -p password Single pool with stratum protocol support cgminer -o stratum+tcp //pool port -u username -p password The list of proxy types are http standard http 1.1 proxy http0 http 1.0 proxy socks4 socks4 proxy socks5 socks5 proxy socks4a socks4a proxy socks5h socks5 proxy using a hostname If you compile cgminer with a version of CURL before 7.19.4 then some of the above will not be available. All are available since CURL version 7.19.4 If you specify the --socks-proxy option to cgminer, it will only be applied to all pools that don t specify their own proxy setting like above After saving configuration from the menu, you do not need to give cgminer any arguments and it will load your configuration. Any configuration file may also contain a single "include" "filename" to recursively include another configuration file. Writing the configuration will save all settings from all files in the output. BUILDING CGMINER FOR YOURSELF DEPENDENCIES Mandatory pkg-confighttp //www.freedesktop.org/wiki/Software/pkg-config libtoolhttp //www.gnu.org/software/libtool/ Optional curl dev library http //curl.haxx.se/libcurl/ (libcurl4-openssl-dev - Must tell configure --disable-libcurl otherwise it will attempt to compile it in) curses dev library (libncurses5-dev or libpdcurses on WIN32 for text user interface) libudev dev library (libudev-dev) (This is only required for USB device support and is linux only) If building from git autoconf automake If building on Red Hat sudo yum install autoconf automake autoreconf libtool openssl-compat-bitcoin-devel.x86_64 \ curl libcurl libcurl-devel openssh CGMiner specific configuration options --enable-avalon Compile support for Avalon (default disabled) --enable-bflsc Compile support for BFL ASICs (default disabled) --enable-bitforce Compile support for BitForce FPGAs (default disabled) --enable-bitfury Compile support for BitFury ASICs (default disabled) --enable-hashfast Compile support for Hashfast (default disabled) --enable-icarus Compile support for Icarus (default disabled) --enable-knc Compile support for KnC miners (default disabled) --enable-bab Compile support for BlackArrow Bitfury (default disabled) --enable-klondike Compile support for Klondike (default disabled) --enable-modminer Compile support for ModMiner FPGAs(default disabled) --without-curses Compile support for curses TUI (default enabled) --with-system-libusb Compile against dynamic system libusb (default use included static libusb) Basic *nix build instructions To actually build ./autogen.sh# only needed if building from git repo CFLAGS="-O2 -Wall -march=native" ./configure options make No installation is necessary. You may run cgminer from the build directory directly, but you may do make install if you wish to install cgminer to a system location or location you specified. Native WIN32 build instructions see windows-build.txt Usage instructions Run "cgminer --help" to see options Usage cgminer [-DdElmpPQqUsTouOchnV] Options for both config file and command line api-allow Allow API access (if enabled) only to the given list of [W ]IP[/Prefix] address[/subnets] This overrides --api-network and you must specify 127.0.0.1 if it is required W in front of the IP address gives that address privileged access to all api commands api-description Description placed in the API status header (default cgminer version) api-groups API one letter groups G cmd cmd[,P cmd *...] See API-README for usage api-listen Listen for API requests (default disabled) By default any command that does not just display data returns access denied See --api-allow to overcome this api-network Allow API (if enabled) to listen on/for any address (default only 127.0.0.1) api-mcast Enable API Multicast listener, (default disabled) The listener will only run if the API is also enabled api-mcast-addr arg API Multicast listen address, (default 224.0.0.75) api-mcast-code arg Code expected in the API Multicast message, don t use - (default "FTW") api-mcast-port arg API Multicast listen port, (default 4028) api-port Port number of miner API (default 4028) balance Change multipool strategy from failover to even share balance benchmark Run cgminer in benchmark mode - produces no shares compact Use compact display without per device statistics debug|-D Enable debug output device|-d arg Select device to use, one value, range and/or comma separated (e.g. 0-2,4) default all disable-rejecting Automatically disable pools that continually reject shares expiry|-E arg Upper bound on how many seconds after getting work we consider a share from it stale (default 120) failover-only Don t leak work to backup pools when primary pool is lagging fix-protocol Do not redirect to a different getwork protocol (eg. stratum) hotplug arg Set hotplug check time to arg seconds (0=never default 5) - only with libusb kernel-path|-K arg Specify a path to where bitstream files are (default "/usr/local/bin") load-balance Change multipool strategy from failover to quota based balance log|-l arg Interval in seconds between log output (default 5) lowmem Minimise caching of shares for low memory applications monitor|-m arg Use custom pipe cmd for output messages net-delay Impose small delays in networking to not overload slow routers no-submit-stale Don t submit shares if they are detected as stale pass|-p arg Password for bitcoin JSON-RPC server per-device-stats Force verbose mode and output per-device statistics protocol-dump|-P Verbose dump of protocol-level activities queue|-Q arg Minimum number of work items to have queued (0 - 10) (default 1) quiet|-q Disable logging output, display status and errors real-quiet Disable all output remove-disabled Remove disabled devices entirely, as if they didn t exist rotate arg Change multipool strategy from failover to regularly rotate at N minutes (default 0) round-robin Change multipool strategy from failover to round robin on failure scan-time|-s arg Upper bound on time spent scanning current work, in seconds (default 60) sched-start arg Set a time of day in HH MM to start mining (a once off without a stop time) sched-stop arg Set a time of day in HH MM to stop mining (will quit without a start time) sharelog arg Append share log to file shares arg Quit after mining N shares (default unlimited) socks-proxy arg Set socks4 proxy (host port) for all pools without a proxy specified syslog Use system log for output messages (default standard error) temp-cutoff arg Temperature where a device will be automatically disabled, one value or comma separated list (default 95) text-only|-T Disable ncurses formatted screen output url|-o arg URL for bitcoin JSON-RPC server user|-u arg Username for bitcoin JSON-RPC server verbose Log verbose output to stderr as well as status output userpass|-O arg Username Password pair for bitcoin JSON-RPC server Options for command line only config|-c arg Load a JSON-format configuration file See example.conf for an example configuration. help|-h Print this message version|-V Display version and exit USB device (ASIC and FPGA) options icarus-options arg Set specific FPGA board configurations - one set of values for all or comma separated icarus-timing arg Set how the Icarus timing is calculated - one setting/value for all or comma separated usb arg USB device selection (See below) usb-dump (See FPGA-README) See FGPA-README or ASIC-README for more information regarding these. ASIC only options avalon-auto Adjust avalon overclock frequency dynamically for best hashrate avalon-fan arg Set fanspeed percentage for avalon, single value or range (default 20-100) avalon-freq arg Set frequency range for avalon-auto, single value or range avalon-cutoff arg Set avalon overheat cut off temperature (default 60) avalon-options arg Set avalon options baud miners asic timeout freq avalon-temp arg Set avalon target temperature (default 50) bflsc-overheat arg Set overheat temperature where BFLSC devices throttle, 0 to disable (default 90) bitburner-fury-options arg Override avalon-options for BitBurner Fury boards baud miners asic timeout freq bitburner-fury-voltage arg Set BitBurner Fury core voltage, in millivolts bitburner-voltage arg Set BitBurner (Avalon) core voltage, in millivolts klondike-options arg Set klondike options clock temptarget See ASIC-README for more information regarding these. FPGA only options bfl-range Use nonce range on bitforce devices if supported See FGPA-README for more information regarding this. Cgminer should automatically find all of your Avalon ASIC, BFL ASIC, BitForce FPGAs, Icarus bitstream FPGAs, Klondike ASIC, ASICMINER usb block erupters, KnC ASICs, BaB ASICs, Hashfast ASICs, ModMiner FPGAs, BPMC/BGMC BF1 USB ASICs and Bi*fury USB ASICs. SETTING UP USB DEVICES WINDOWS On windows, the direct USB support requires the installation of a WinUSB driver (NOT the ftdi_sio driver), and attach it to the chosen USB device. When configuring your device, plug it in and wait for windows to attempt to install a driver on its own. It may think it has succeeded or failed but wait for it to finish regardless. This is NOT the driver you want installed. At this point you need to associate your device with the WinUSB driver. The easiest way to do this is to use the zadig utility which you must right click on and run as administrator. Then once you plug in your device you can choose the "list all devices" from the "option" menu and you should be able to see the device as something like "BitFORCE SHA256 SC". Choose the install or replace driver option and select WinUSB. You can either google for zadig or download it from the cgminer directory in the DOWNLOADS link above. When you first switch a device over to WinUSB with zadig and it shows that correctly on the left of the zadig window, but it still gives permission errors, you may need to unplug the USB miner and then plug it back in. Some users may need to reboot at this point. LINUX On linux, the direct USB support requires no drivers at all. However due to permissions issues, you may not be able to mine directly on the devices as a regular user without giving the user access to the device or by mining as root (administrator). In order to give your regular user access, you can make him a member of the plugdev group with the following commands sudo usermod -G plugdev -a `whoami` If your distribution does not have the plugdev group you can create it with sudo groupadd plugdev In order for the BFL devices to instantly be owned by the plugdev group and accessible by anyone from the plugdev group you can copy the file "01-cgminer.rules" from the cgminer archive into the /etc/udev/rules.d directory with the following command sudo cp 01-cgminer.rules /etc/udev/rules.d/ After this you can either manually restart udev and re-login, or more easily just reboot. OSX On OSX, like Linux, no drivers need to be installed. However some devices like the bitfury USB sticks automatically load a driver thinking they re a modem and the driver needs to be unloaded for cgminer to work sudo kextunload -b com.apple.driver.AppleUSBCDC sudo kextunload -b com.apple.driver.AppleUSBCDCACMData Advanced USB options The --usb option can restrict how many Avalon, BFL ASIC, BitForce FPGAs, Klondike ASIC, ModMiner FPGAs or Icarus bitstream FPGAs it finds --usb 1 2,1 3,1 4,1 * or --usb BAS 1,BFL 1,MMQ 0,ICA 0,KLN 0 or --usb 10 You can only use one of the above 3 The first version --usb 1 2,1 3,1 4,1 * allows you to select which devices to mine on with a list of USB bus_number device_address All other USB devices will be ignored Hotplug will also only look at the devices matching the list specified and find nothing new if they are all in use You can specify just the USB bus_number to find all devices like 1 * which means any devices on USB bus_number 1 This is useful if you unplug a device then plug it back in the same port, it usually reappears with the same bus_number but a different device_address You can see the list of all USB devices on linux with sudo lsusb Cgminer will list the recognised USB devices with the -n option or the --usb-dump 0 option The --usb-dump N option with a value of N greater than 0 will dump a lot of details about each recognised USB device If you wish to see all USB devices, include the --usb-list-all option The second version --usb BAS 1,BFL 1,MMQ 0,ICA 0,KLN 0 allows you to specify how many devices to choose based on each device driver cgminer has - there are currently 5 USB drivers BAS, BFL, MMQ. ICA KLN N.B. you can only specify which device driver to limit, not the type of each device, e.g. with BAS n you can limit how many BFL ASIC devices will be checked, but you cannot limit the number of each type of BFL ASIC Also note that the MMQ count is the number of MMQ backplanes you have not the number of MMQ FPGAs The third version --usb 10 means only use a maximum of 10 devices of any supported USB devices Once cgminer has 10 devices it will not configure any more and hotplug will not scan for any more If one of the 10 devices stops working, hotplug - if enabled, as is default will scan normally again until it has 10 devices --usb 0 will disable all USB I/O other than to initialise libusb NOTE The --device option will limit which devices are in use based on their numbering order of the total devices, so if you hotplug USB devices regularly, it will not reliably be the same devices. WHILE RUNNING The following options are available while running with a single keypress [P]ool management [S]ettings [D]isplay options [Q]uit P gives you Current pool management strategy Failover [F]ailover only disabled [A]dd pool [R]emove pool [D]isable pool [E]nable pool [C]hange management strategy [S]witch pool [I]nformation S gives you [Q]ueue 1 [S]cantime 60 [E]xpiry 120 [W]rite config file [C]gminer restart D gives you [N]ormal [C]lear [S]ilent mode (disable all output) [D]ebug off [P]er-device off [Q]uiet off [V]erbose off [R]PC debug off [W]orkTime details off co[M]pact off [L]og interval 5 Q quits the application. The running log shows output like this [2013-11-09 11 04 41] Accepted 01b3bde7 Diff 150/128 AVA 1 pool 0 [2013-11-09 11 04 49] Accepted 015df995 Diff 187/128 AVA 1 pool 0 [2013-11-09 11 04 50] Accepted 01163b68 Diff 236/128 AVA 1 pool 0 [2013-11-09 11 04 53] Accepted 9f745840 Diff 411/128 BAS 1 pool 0 The 8 byte hex value are the 1st nonzero bytes of the share being submitted to the pool. The 2 diff values are the actual difficulty target that share reached followed by the difficulty target the pool is currently asking for. Also many issues and FAQs are covered in the forum thread dedicated to this program, http //forum.bitcoin.org/index.php?topic=28402.0 The output line shows the following (5s) 1713.6 (avg) 1707.8 Mh/s | A 729 R 8 HW 0 WU 22.53/m Each column is as follows 5s A 5 second exponentially decaying average hash rate avg An all time average hash rate A The total difficulty of Accepted shares R The total difficulty of Rejected shares HW The number of HardWare errors WU The Work Utility defined as the number of diff1 shares work / minute (accepted or rejected). BAS 1 max 67C 3.27V | 62.29G/62.19Gh/s | A 140813 R 256 HW 2860 WU 852.0/m Each column is as follows Temperature (if supported) Fanspeed (if supported) A 5 second exponentially decaying average hash rate An all time average hash rate The total difficulty of accepted shares The total difficulty of rejected shares The number of hardware erorrs The work utility defined as the number of diff1 shares work / minute The cgminer status line shows ST 1 SS 0 NB 1 LW 8 GF 1 RF 1 ST is STaged work items (ready to use). SS is Stale Shares discarded (detected and not submitted so don t count as rejects) NB is New Blocks detected on the network LW is Locally generated Work items GF is Getwork Fail Occasions (server slow to provide work) RF is Remote Fail occasions (server slow to accept work) The block display shows Block 0074c5e482e34a506d2a051a... Started [17 17 22] Best share 2.71K This shows a short stretch of the current block, when the new block started, and the all time best difficulty share you ve found since starting cgminer this time. MULTIPOOL FAILOVER STRATEGIES WITH MULTIPOOL A number of different strategies for dealing with multipool setups are available. Each has their advantages and disadvantages so multiple strategies are available by user choice, as per the following list FAILOVER The default strategy is failover. This means that if you input a number of pools, it will try to use them as a priority list, moving away from the 1st to the 2nd, 2nd to 3rd and so on. If any of the earlier pools recover, it will move back to the higher priority ones. ROUND ROBIN This strategy only moves from one pool to the next when the current one falls idle and makes no attempt to move otherwise. ROTATE This strategy moves at user-defined intervals from one active pool to the next, skipping pools that are idle. LOAD BALANCE This strategy sends work to all the pools on a quota basis. By default, all pools are allocated equal quotas unless specified with --quota. This apportioning of work is based on work handed out, not shares returned so is independent of difficulty targets or rejected shares. While a pool is disabled or dead, its quota is dropped until it is re-enabled. Quotas are forward looking, so if the quota is changed on the fly, it only affects future work. If all pools are set to zero quota or all pools with quota are dead, it will fall back to a failover mode. See quota below for more information. The failover-only flag has special meaning in combination with load-balance mode and it will distribute quota back to priority pool 0 from any pools that are unable to provide work for any reason so as to maintain quota ratios between the rest of the pools. BALANCE This strategy monitors the amount of difficulty 1 shares solved for each pool and uses it to try to end up doing the same amount of work for all pools. QUOTAS The load-balance multipool strategy works off a quota based scheduler. The quotas handed out by default are equal, but the user is allowed to specify any arbitrary ratio of quotas. For example, if all the quota values add up to 100, each quota value will be a percentage, but if 2 pools are specified and pool0 is given a quota of 1 and pool1 is given a quota of 9, pool0 will get 10% of the work and pool1 will get 90%. Quotas can be changed on the fly by the API, and do not act retrospectively. Setting a quota to zero will effectively disable that pool unless all other pools are disabled or dead. In that scenario, load-balance falls back to regular failover priority-based strategy. While a pool is dead, it loses its quota and no attempt is made to catch up when it comes back to life. To specify quotas on the command line, pools should be specified with a semicolon separated --quota(or -U) entry instead of --url. Pools specified with url are given a nominal quota value of 1 and entries can be mixed. For example url poola porta -u usernamea -p passa --quota "2;poolb portb" -u usernameb -p passb Will give poola 1/3 of the work and poolb 2/3 of the work. Writing configuration files with quotas is likewise supported. To use the above quotas in a configuration file they would be specified thus "pools" [ { "url" "poola porta", "user" "usernamea", "pass" "passa" }, { "quota" "2;poolb portb", "user" "usernameb", "pass" "passb" } ] LOGGING cgminer will log to stderr if it detects stderr is being redirected to a file. To enable logging simply add 2 logfile.txt to your command line and logfile.txt will contain the logged output at the log level you specify (normal, verbose, debug etc.) In other words if you would normally use ./cgminer -o xxx -u yyy -p zzz if you use ./cgminer -o xxx -u yyy -p zzz 2 logfile.txt it will log to a file called logfile.txt and otherwise work the same. There is also the -m option on linux which will spawn a command of your choice and pipe the output directly to that command. The WorkTime details debug option adds details on the end of each line displayed for Accepted or Rejected work done. An example would be -00000059.ed4834a3 M X D 1.0 G 17 02 38 0.405 C 1.855 (2.995) W 3.440 (0.000) S 0.461 R 17 02 47 The first 2 hex codes are the previous block hash, the rest are reported in seconds unless stated otherwise The previous hash is followed by the getwork mode used M X where X is one of P Pool, T Test Pool, L LP or B Benchmark, then D d.ddd is the difficulty required to get a share from the work, then G hh mm ss n.nnn, which is when the getwork or LP was sent to the pool and the n.nnn is how long it took to reply, followed by O on it s own if it is an original getwork, or C n.nnn if it was a clone with n.nnn stating how long after the work was recieved that it was cloned, (m.mmm) is how long from when the original work was received until work started, W n.nnn is how long the work took to process until it was ready to submit, (m.mmm) is how long from ready to submit to actually doing the submit, this is usually 0.000 unless there was a problem with submitting the work, S n.nnn is how long it took to submit the completed work and await the reply, R hh mm ss is the actual time the work submit reply was received If you start cgminer with the --sharelog option, you can get detailed information for each share found. The argument to the option may be "-" for standard output (not advisable with the ncurses UI), any valid positive number for that file descriptor, or a filename. To log share data to a file named "share.log", you can use either ./cgminer --sharelog 50 -o xxx -u yyy -p zzz 50 share.log ./cgminer --sharelog share.log -o xxx -u yyy -p zzz For every share found, data will be logged in a CSV (Comma Separated Value) format timestamp,disposition,target,pool,dev,thr,sharehash,sharedata For example (this is wrapped, but it s all on one line for real) 1335313090,reject, ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000, http //localhost 8337,GPU0,0, 6f983c918f3299b58febf95ec4d0c7094ed634bc13754553ec34fc3800000000, 00000001a0980aff4ce4a96d53f4b89a2d5f0e765c978640fe24372a000001c5 000000004a4366808f81d44f26df3d69d7dc4b3473385930462d9ab707b50498 f681634a4f1f63d01a0cd43fb338000000000080000000000000000000000000 0000000000000000000000000000000000000000000000000000000080020000 RPC API For RPC API details see the API-README file FAQ Q Can I mine on servers from different networks (eg xxxcoin and bitcoin) at the same time? A No, cgminer keeps a database of the block it s working on to ensure it does not work on stale blocks, and having different blocks from two networks would make it invalidate the work from each other. Q Can I configure cgminer to mine with different login credentials or pools for each separate device? A No. Q Can I put multiple pools in the config file? A Yes, check the example.conf file. Alternatively, set up everything either on the command line or via the menu after startup and choose settings- write config file and the file will be loaded one each startup. Q The build fails with gcc is unable to build a binary. A Remove the "-march=native" component of your CFLAGS as your version of gcc does not support it. Q Can you implement feature X? A I can, but time is limited, and people who donate are more likely to get their feature requests implemented. Q Work keeps going to my backup pool even though my primary pool hasn t failed? A Cgminer checks for conditions where the primary pool is lagging and will pass some work to the backup servers under those conditions. The reason for doing this is to try its absolute best to keep the devices working on something useful and not risk idle periods. You can disable this behaviour with the option --failover-only. Q Is this a virus? A Cgminer is being packaged with other trojan scripts and some antivirus software is falsely accusing cgminer.exe as being the actual virus, rather than whatever it is being packaged with. If you installed cgminer yourself, then you do not have a virus on your computer. Complain to your antivirus software company. They seem to be flagging even source code now from cgminer as viruses, even though text source files can t do anything by themself. Q Can you modify the display to include more of one thing in the output and less of another, or can you change the quiet mode or can you add yet another output mode? A Everyone will always have their own view of what s important to monitor. The defaults are very sane and I have very little interest in changing this any further. Q What are the best parameters to pass for X pool/hardware/device. A Virtually always, the DEFAULT parameters give the best results. Most user defined settings lead to worse performance. Q What happened to CPU and GPU mining? A Their efficiency makes them irrelevant in the bitcoin mining world today and the author has no interest in supporting alternative coins that are better mined by these devices. Q GUI version? A No. The RPC interface makes it possible for someone else to write one though. Q I m having an issue. What debugging information should I provide? A Start cgminer with your regular commands and add -D -T --verbose and provide the full startup output and a summary of your hardware and operating system. Q Why don t you provide win64 builds? A Win32 builds work everywhere and there is precisely zero advantage to a 64 bit build on windows. Q Is it faster to mine on windows or linux? A It makes no difference in terms of performance. It comes down to choice of operating system for their various features and your comfort level. However linux is the primary development platform and is virtually guaranteed to be more stable. Q My network gets slower and slower and then dies for a minute? A; Try the --net-delay option if you are on a getwork or GBT server. Q How do I tune for p2pool? A It is also recommended to use --failover-only since the work is effectively like a different block chain, and not enabling --no-submit-stale. If mining with a BFL (fpga) minirig, it is worth adding the --bfl-range option. Q I run PHP on windows to access the API with the example miner.php. Why does it fail when php is installed properly but I only get errors about Sockets not working in the logs? A http //us.php.net/manual/en/sockets.installation.php Q What is a PGA? A At the moment, cgminer supports 3 FPGAs BitForce, Icarus and ModMiner. They are Field-Programmable Gate Arrays that have been programmed to do Bitcoin mining. Since the acronym needs to be only 3 characters, the "Field-" part has been skipped. Q What is an ASIC? A They are Application Specify Integrated Circuit devices and provide the highest performance per unit power due to being dedicated to only one purpose. Q Can I mine scrypt with FPGAs or ASICs? A No. Q What is stratum and how do I use it? A Stratum is a protocol designed for pooled mining in such a way as to minimise the amount of network communications, yet scale to hardware of any speed. With versions of cgminer 2.8.0+, if a pool has stratum support, cgminer will automatically detect it and switch to the support as advertised if it can. If you input the stratum port directly into your configuration, or use the special prefix "stratum+tcp //" instead of "http //", cgminer will ONLY try to use stratum protocol mining. The advantages of stratum to the miner are no delays in getting more work for the miner, less rejects across block changes, and far less network communications for the same amount of mining hashrate. If you do NOT wish cgminer to automatically switch to stratum protocol even if it is detected, add the --fix-protocol option. Q Why don t the statistics add up Accepted, Rejected, Stale, Hardware Errors, Diff1 Work, etc. when mining greater than 1 difficulty shares? A As an example, if you look at Difficulty Accepted in the RPC API, the number of difficulty shares accepted does not usually exactly equal the amount of work done to find them. If you are mining at 8 difficulty, then you would expect on average to find one 8 difficulty share, per 8 single difficulty shares found. However, the number is actually random and converges over time, it is an average, not an exact value, thus you may find more or less than the expected average. Q My keyboard input momentarily pauses or repeats keys every so often on windows while mining? A The USB implementation on windows can be very flaky on some hardware and every time cgminer looks for new hardware to hotplug it it can cause these sorts of problems. You can disable hotplug with hotplug 0 Q What should my Work Utility (WU) be? A Work utility is the product of hashrate * luck and only stabilises over a very long period of time. Assuming all your work is valid work, bitcoin mining should produce a work utility of approximately 1 per 71.6MH. This means at 5GH you should have a WU of 5000 / 71.6 or ~ 69. You cannot make your machine do "better WU" than this - it is luck related. However you can make it much worse if your machine produces a lot of hardware errors producing invalid work. This code is provided entirely free of charge by the programmer in his spare time so donations would be greatly appreciated. Please consider donating to the address below. Con Kolivas kernel@kolivas.org 15qSxP1SQcUX3o4nhkfdbgyoWEFMomJ4rZ
https://w.atwiki.jp/2dogsdemosoft/pages/20.html
update:(Fri) July 17th 2015 (Japan time)|Visitr total - today - yesterday - | Posted by Mika Iwamuro (tottorimiyagi, mii) 白い犬リーちゃんを探しています [Please help us find missing white dog. Please Share and Spread The Truth.] We are looking for missing white dog named Lee-chan, she was lost at Arahama-district Sendai-city Miyagi-prefecture Japan, after the Earthquake. Thank you so much for many help. (Fri) July 17th 2015 (Japan time), the white dog Lee-chan is still missing. Please eyewitness information. About 4 years ago, after the Japan Big Earthquake and Tsunami (March 11th 2011), Several Major Medias reported false rescue story "both dogs were rescued by an animal rescue (off road bikers)". But in fact Brown tan dog named Mei-chan was rescued by her real owner Mr. Okubo on March 18th 2011. When Lee-chan (white dog) was not there. In fact The white dog has been missing since March 14th 2011. Even now, their real owner just hope that he will meet his white dog again. I think that there are many possibilities. I thought there is possibility that Lee-chan is dead. But there is possibility that Lee –chan is alive! Maybe Lee chan was rescued by overseas people, and carried somewhere. Maybe Lee chan was rescued neighbor and she is alive, and neighbor does not have Internet, so neighbor does not know that the owner is looking for Lee chan. There are several possible. I want to try all means possible to find Lee-chan. Youtube movie Mei (one of two loyal tsunami dogs in Japan) eat food, filmed by Mika http //youtu.be/Mjn6O4Lf_yE Feature of the missing dog Name Lee (Lee-chan, ‘chan’ is Japanese honorific.) English setter Female Large dog Totally white on her body Her ears are right brown She has gray spotted around her nose Then she had silver chains around her neck Then 8 years old (Now 12 years old) Then not spay Then not microchipped Gentle Friendly When Last Seen 4 years ago, Monday March 14th 2011 about 7 am, a photo of Lee-chan was taken by Takuya Imai who is a cameraman of Nikkei newspaper, near the place dogs filmed by Fuji TV. And March 13th 2011 about 4-5 pm, Lee-chan was filmed by Fuji TV crew. Where Last Seen Nearby 円庵(まどか庵 Madoka-Ann which was light meal shop.), near the Sendai Municipal Arahama Elementary School, in Arahama, Wakabayashi-ku, Sendai-shi, Miyagi-ken, Japan. Nearby Miyagi Prefectural Road137, Arahama-Haranomachi Line in Japan. MAP: Image of Lee-chan (filmed by Fuji TV at March 13th 2011 about 4-5 pm.) Image of Lee-chan (this photo is taken by Takuya Imai who is a cameraman of Nikkei news paper, at near by Madoka-Ann, on March 14th, 2011. about 7 am) Madoka-Ann was the place where the dogs filmed by Fuji TV 津波で倒壊した家に残る犬(14日午前、仙台市若林区)=写真 今井拓也 A dog stay with a house which was collapsed by tsunami (March 14th, 2011. Morning, Arahama) = The picture by Takuya Imai When these dogs filmed by Fuji TV on March 13th 2011, 4-5 pm, white dog (Lee-chan) laid herself down on the ground, but next morning Lee-chan stood up by herself in Nikkei photo. Their real owner said “This dog of the photo is Lee!” Do you know someone who had been in Sendai around March – April 2011? 4 years ago, actually, PETA Asia, HSI, Kinship Circle, other foreign cameramen, human rescuers had been in Sendai at that time, but I don’t know other foreign people. If you know, please tell them this info please tell me. I think that there is possibility Lee-chan was got by overseas people, and she was adopted to far from Sendai Japan, but those rescuers might believed in false rescue report and they have not look for the real owner. Or they might did not notice that Lee-chan is same dog as one on TV, or might did not know about these dogs at the beginning. Pattern on Mei-chan (brown tan dog) is so characteristic, but there are many dogs like Lee-chan (white injured dog). If anyone have the info on the missing Lee-chan (white female setter), whoever please tell me (Mika Iwamuro) via Email twodogs_tottorimiyagi_mii3328@yahoo.co.jp I was not able to read and write English until Jury 2011, I started to learn English from July 2011, so I late to ask foreign people about this matter. Too much time passed from the earthquake, but I their real owner cannot give up searching Lee-chan. Please help us. URL of this page:http //www18.atwiki.jp/2dogs/pages/92.html Tiny URL of this page http //p.tl/rLFD If you access this page from your cell phone, then often 403 error occur. In that case, would you please access this page again after a short interval, and you can watch this page. ●Nippon SPCA, Ms. Akiko Fujimura said She received an information that a person looked Lee-chan in Arahama Elementary School, on March 17th 2011, but I have not heard detail. imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (荒浜小学校 2011年3月21日 カット.JPG) Above image Arahama elementary school about March 21st 2011. Madoka-Ann(Madoka-Arahama) was in back of the dogs in Fuji TV video. (Now, Madoka-Ann is not there, because it was torn down around November 2011.) Before the earthquake Madoka-Ann http //r.tabelog.com/miyagi/A0401/A040103/4010137/dtlrvwlst/1752399/4178357/ After the earthquake Madoka-Ann (Madoka-Ann was around 50 second in this video) http //www.youtube.com/watch?v=wIUn52aZ1Ko feature=related There is ken-do 137 (137 Prefectural Road) just in front of Madoka-Ann, Lee-chan was last seen by Nikkei cameraman near there. Japanese Self Defense Force, or police, or Firemen, or other, they had marked after search survivors. March 17th 2011, someone marked on Madoka-Ann. But we have not known who marked this, even though we have searched who is this. ■We have inquired about Lee-chan to several organizations. ●May to July 2011, their real owner Mr. Okubo had visited the Sendai Animal Control Center several time, but a workers said that white setter like Lee-chan has not been in there. ●In September 2011, I reported it the police and the Self-Defense Forces in Miyagi-prefecture Japan. They said “we wish white dog will be found” “I wish the best, please tell the owner ” But till now, they have had no information of Lee-chan. Since after March 19th 2011, every Saturday and Sunday, Madoka-Arahama staff had been to aroud this place, but they have not seen white dog. Until now, I have inquired about white setter to several animal rescue group, Minasigo-kyuuen-tai, Angels shiga, Animal Friends Niigata, Heart Tokushima, PETA Asia, these 5 group were searching for the two tsunami dogs in Sendai-city Japan around March 14 – 15th 2011. But they said “We have not seen white dog or brown tan dog”. Also I asked dogwood and UKC JAPAN, but they have not seen the white setter. January 2012, a staff of fire fighting team in Miyagi who asked other members, their family, 500 people, about white dog. But, unfortunately, they have not seen white dog, but I think we could close Lee-chan one step. We continue to search for Lee-chan. March 2012, I asked Kahoku news paper and Sankei news paper, because they reported about Arahama-district Sendai-city, but they have not seen white dog. I inquired of Gifu, Okinawa, Aichi Self-Defense Forces, because some of them had been in Sendai, but they have no information. I inquired of Metropolitan Police Department in Tokyo, if they had seen the white large dog, because some of them had been in Sendai, but they said that “It is hard for us to find the members who had been in Sendai at that time, because too many member went to disaster area.” July 2012, I inquired of Animal Peace Miyagi, they are so kind, but they have no informatin about Lee. August 2012, A-cube Miyagi said that they have no information. I have inquired of 14 animal rescue groups and other about 15 facilities in Japan, if they saw white dog, but 9 groups said “We were told that both dogs were rescued.” And most of other people did not know these dogs from the beginning, and only one group Animal Friends Niigata, Isabella said “NO proof of their safe, NOTHING.” around October 2011. August 2012, 2 groups said “We thought both dogs were rescued”, September 2012, one group said same thing. Around August 2012, I inquired of Ashlay Fruno and PETA Asia, Ashlay has not replied me, but PETA member replied me, but they didn’t had the information of Lee. Around February 4th 2013, I inquired of HSI and Kinship Circle and ASPCA, about Lee-chan, HSI replied me but they don’t have the information of Lee-chan. Kinship Circle and ASPCA have not replied me yet. Even now(March 10th 2013), rumors and major media s wrong report are hindering us from searching for the white dog. ■Is this Lee-chan? information(all in Japanese) Update (Thu) February 18th 2013 I have received many information about white setter from many people, thank you so much!! http //41.xmbs.jp/poyacchio-19056-n.php?guid=on plist=0 I have added everyone’s information on above Link ■Missing Dog Poster (up date February 24th 2013) Poster Missing white tsunami dog Sendai Japan leechan0314demosoft.PDF Do you know if someone has seen the white large dog in Sendai Japan, since after March 14th 2011? Several news said that many foreign human rescuers, animal rescuers, cameramen had came to Sendai Japan, since March 12th 2011. We believe someone has seen Lee-chan. Please ask your friends if someone has seen white female setter from Sendai Japan. Timeline Detail March 11, 2011. When the tsunami came, the moment their real owner Mr. Hisato Okubo heard the tsunami warning, he turned his home, and he took his two dogs(Mei and Lee) and took refuge to the fives floor in Elementary School. Soon after that, his house and his cell phone were washed away by the tsunami. ______________ March 12, 2011. Mr. Okubo joined the volunteer fire department, a man told him "There is some dog food for a week-10 days in Elementary School.", so he left two dogs in the Arahama Elementary School, and he went to the work of the Volunteer fire department to help other people. Until March 12, 2011, the two dogs were chained in Elementary School, but it seems that someone lost the chaine... _______________ March 13, 2011, 4-5 pm Two dogs were filmed by Fuji TV crew. And Fuji TV reporter Mr. Yamashina and other crew did not rescue the two dogs. And they left two dogs behind. Mr. Yamashina and other TV crew have NOT called a vet or other rescue. (I heard this information from Mr. Yamashina on the phone, in early October 2011. Mr. Yamashina is a reporter of Fuji TV.) _______________ (Mon) March 14, 2011, about 7 00 am. A picture of white dog was taken By Takuya Imai, he is a cameraman of Nikkei news paper, near the place where dogs filmed by Fuji TV. ______________ (Mon) March 14, 2011, about 9 40 pm. Two dogs were aired on Fuji TV. And these two loyal tsunami dogs became famous all over the world via youtube. So many people were concerned about these two dogs, and posted "help these dogs! Why did not Fuji TV crew rescue these dogs?" everywhere. _____________ (Tue) March 15, 2011. False rescue rumor started on Facebook. _______________ (Wed) March 16, 2011. Many Japanese/overseas blogger posted on their blog "two dogs were rescued by off road bikers!" without confirmation of fact. The rumor spread like wildfire. ______________ (Thu) March 17, 2011. Fuji TV(Japanese major media) reported false rescue story “Two tsunami dogs were rescued by an animal protection group. White injured dog is receiving a drip infusion treatment.” without confirmation of facts. There were NO rescued dogs, and were only stray dogs, on Fuji s rescue report. At (Thu) March 17th 2011, Fuji TV crew NO ONE has seen these two dogs were rescued, they have only heard a rumor. In fact white setter named Lee has been missing since March 14th 2011. ___________ (Fri) March 18, 2011. Their real owner Mr. Okubo rescued Mei (brown tan dog) in elementary school where near the place where dogs filmed by Fuji TV. But Lee (white dog) was not there. There after, Mr. Okubo and his family have been looking for Lee frantically. At that time, Mr. Okubo had not known that his dogs were aired on the TV around the world. Intently, Mr. Okubo his family have been looking for Lee frantically. ___________ March, 2011. Several Major medias reported false rescue story "both dogs were rescued by an animal rescue." around the world. Fuji TV(Japan), CNN, NPR, TYT, CBS, ABC(America), UK telegraph, ITN(England), Apple Daily(Hong Kong), Russian TV, more, Several major medias reported false rescue “Two loyal tsunami dogs were rescued. Happy ending!” without confirmation of facts. But in fact, white setter named Lee-chan has been missing since March 14th 2011. Of course, there were NO film/pictures of after dogs were rescued, on their report. There were only stray dogs, on their report. But even now, March 10th 2013 major medias still have NOT corrected their wrong reports. So many many people still believe that Japan two loyal tsunami dogs were rescued by bikers. Even now (March 10th 2013), rumors and major media s wrong report are hindering us from searching for the white dog. Major medias reported false information, and they are hindering us from searching for the white dog, but major media still have NOT corrected their wrong reports. A man said "Major media make money by publishing stories people want to know. It is not about the truth. false rescue was a good story." Do you want FAKE good story? I NEVER want to know any lies. I always want to know the TRUTH. I and many Japanese requested Fuji TV to correct their wrong report, but Fuji has never replied us. Maybe, if Fuji TV reports the truth (white dog is still missing), then Fuji TV lose their popularity and Fuji lose the benefit. So Japanese medias have not reported the truth. Late in July, 2011. Fuji TV reporter Mr. Yamashina visited Mr. Okubo s house. Then Mr. Yamashina actually saw Mei (brown tan dog) and made sure that Mei is the same dog aired on Fuji TV. Mr. Yamashina told Mr. Okubo "There is a rumor that a dog was rescued by a man who lives in Chiba-prefecture." Mr. Okubo and his family said "If that man has Lee (white dog), we want him to return Lee to us." But as everyone know, rescue story is false rumor…. September 8th, 2011. I phoned the two Mr. Okubo on September 8th 2011, for the first time. I heard Okubo s voice, I was moved by the sad voice in which the Mr. Okubo spoke "white dog is still missing". I repented, I should have noticed false rumor. If I/other people noticed Media’s false report earlier, Lee-chan might was found long time ago. September 14, 2011. Mr. Harigaya visited Mr. Okubo’s house on September 14th 2011, for the first time. When Ms. Akiko Fujimura (the Nippon SPCA founder) went to the Mr. Okubo’s house with Mr. Harigaya. Akiko Fujimura met Mr. Okubo on September 14th 2011, for the first time, too. They actually saw brown tan dog. Thanks to everyone s efforts, thank you 2 channel users, thank you Global Animal and GA readers! Thank you Mr. Harigaya! If it were not for GA reports and GA reader s comments, and 2 channel user s posts, and Mr. Harigaya s advice, I could not contact their real owner. November 1, 2011. Akiko Fujimura published Mei-chan s photos and two dogs s story, via Hachiko Coalition facebook page. UPDATE JAPAN One Loyal Tsunami Dog Found http //www.globalanimal.org/2011/11/01/update-japan-one-loyal-tsunami-dog-found/43001/ November 3rd, 2011. APF news Farm Sunctuary Farm of Hope ~Fukushima~ Official BLOG Kurumi-chan and Lee-chan (Copied and translation) http //www18.atwiki.jp/2dogs/pages/57.html Their real owner Mr. Okubo just hope he meet his white dog named Lee again! The owner had not has any Internet environment since the earthquake, so we have been supporting to search for Lee-chan. Lee-chan (white injured dog) and Mei-chan (Brown dog) attracted the people s attention to many victim animals, all over the world, and they rescued many animals. So... Let s repay their loyal. Let s reunite with Lee-chan (missing white dog) her real owner Mr. Okubo Mei-chan (safe brown dog). Do you know someone who got white dog from Sendai Japan? The real owner of Japan Two Loyal Tsunami Dogs, Mr. O described how he felt [1] http //www52.atwiki.jp/2dogswiki/ [2] The real owner of Japan Two Loyal Tsunami Dogs, Mr. O described how he felt http //www52.atwiki.jp/2dogswiki/pages/15.html Please tell me your information about white femal setter from Sendai Japan. Mika Iwamuro (みぃ@meba、tottorimiyagi、mii3328) E-mail twodogs_tottorimiyagi_mii3328@yahoo.co.jp Or lee_chan0314@yahoo.co.jp Even if someone has seen dead white dog in Sendai Japan, please tell me. Sorry to ask this of you when you are busy, but I hope your help. Also, Farm of Hope and Nippon SPCA are still looking for Lee-chan. Farm of Hope [M Farm] http //fukushima-farmsanctuary.blogzine.jp/blog/2011/11/post_f7ab.html kibouno.bokujyou@gmail.com Nippon SPCA http //www.nipponspca.com/ info@nipponspca.com Youtube|mii169686 (Mika Iwamuro) http //www.youtube.com/user/mii169686 (There are the movie of brown tan dog named Mei-chan) Facebook|Mika Iwamuro http //www.facebook.com/photo.php?fbid=420833198002550 set=a.371098812975989.90415.100002276214962 type=3 theater (Please share about Lee-chan) Twitter @tottorimiyagi http //twtr.jp/user/tottorimiyagi (Please RT about missing white dog)
https://w.atwiki.jp/lameaintmp3encoder/pages/13.html
LAME 3.0以降 赤 = 音質に関するバグ修正や機能features and bug fixes which affect quality青= エンコード速度に関するバグ修正や機能features and bug fixes which affect speed 黒 =ユーザビリティなどその他 usability, portability, other LAME 3.98 正式版 リリース未定 LAME 3.98 beta 8 2008 4 13 Robert Hegemann LAME now accepts a floating point value in the range [0,...,10[ as VBR quality setting, like-V5.678 Found and fixed some suspicious code in additive masking calculation for VBR-NEW bug-fix experimental code was defaulted by accident for VBR-NEW fix for some endianess problem on big-endian machines LAME 3.98 beta 7 2008 4 6 Robert Hegemann libmp3lame API allow frontends to separately retrieve LAME/Xing and ID3 data, because the old library automatism makes it impossible to make fully buffered encodes. libmp3lame API added some experimental unicode ID3 tagging code. frontends write itself final ID3 tags and LAME/Xing header frame lame_enc.dll writes itself final LAME/Xing header frame Latest changes to the new VBR psymodel uses a different spreading function bug-fix for out-of-bounds array access (program stack corruption possible) LAME 3.98 beta 6 2007 12 16 Robert Hegemann Feature request[ 1811483 ] WAVE_FORMAT_EXTENSIBLE support (PCM) Fix for some rare scalefactor selection issue the newer vbr code had at low compression levels Fix for Bugtracker item[ 1813496 ] AIFF parsing bug Latest changes to the new VBR code it now has its own psy model, a derivation from NSPSY. some more tuning has been done for this new psy model.Many thanks to Horst Albrecht and Myles Thaiss. the "out-of-bits" strategy is reworked It was possible, that the "interchannel masking effects feature" was used by the dual-channel-mode for bi-lingual encodings too. It was meant to work on stereo L/R channels only. LAME 3.98 beta 5 2007 8 12 Jonathan Stott Bug tracker items [ 1590693 ] ID3v2 tag not writing, [ 1636267 ] ID3v2 tags overwritten If the output file is opened write-only , then LAME can t update the LAME tag. In this case LAME silently overwrote the first bytes of the file and an optional ID3v2 tag disappeared. Now an error message will be printed and no data is written in this case. Robert Hegemann Fix for Bugtracker item[ 1719593 ] Track numbers 255 not allowed even with --id3v2-only Fix for Bugtracker item[ 1742623 ] fail(lame --mp3input -m m -b 128 --resample 8 *.mp3 **.mp3) The problem here was, the input files are MPEG-1 Layer2 files named as MP3s. Even if you leave out the --mp3input switch LAME tried to decode the input files as Layer3 files because of the file name extension and because it found some valid looking Layer3 synchronization header. The fixed LAME version does not assume the file name extension is always correct and treats the files depending on the first found MPEG sync word. The files in question are now correctly detected as Layer2 files and transcoding does succeed. Fix for Bugtracker item[ 1445175 ] Input being stdin fails in Windows on WAV files The problem here was, seeking on pipes shows some different behaviour depending on C-Library implementations. The workaround tries to detect it s working on a pipe and doing some reading instead of seeking in that case. Fixing some memory leak in the lame_enc.dll . Fix for Bugtracker items[ 1160757, 1160741 ] --little-endian / --big-endian not working These switches where originally intended to be used together with Libsndfile only. Fix for Bugtracker item[ 1746336 ] Incorrect Bitrate with ABR und --resample, LAME 3.98b4 Some earlier bug-fix had some typo. As a result, when adding a --resample 123 switch, the average bitrate rised upto maximum bitrate. LAME 3.98 beta 4 2007 6 23 Dennis Lambe Jr Added support for total track count (id3v2) in the frontend Nyaochi Ability to set user-defined ID3v2.3 frame Ability to include albumArt in ID3v2.3 tag Robert Hegemann Bugfix the "play length in ms", which is stored in the ID3v2 tag TLEN, was not correctly computed. Some hardware and software players were confused by this garbage data. Out of bits strategy for the newer VBR code overhauled LAME API the ID3 tag functions do not store the pointers passed anymore, they do make deep copies of strings passed as parameters. Changes in LAME frontend switches regarding ID3 tags --tg "MyGenre"will route unknown ID3v1 genres to "Other" for ID3v1 tags and will be stored as plain text "MyGenre" for ID3v2 tags. Genres given by known ID3v1 numbers will be stored as its corresponding text in ID3v2 tags.--tn "02/02"will store the track number specified as plain text as-is for ID3v2 tags. LAME 3.98 beta 3 2007 5 22 Robert Hegemann Fixes regarding max number of bits limitation LAME 3.98 beta 2 2007 5 20 Robert Hegemann Bug tracker item [ 1693461 ];Fixed memory leaks in ACM codec Fixed encoding of non-standard sampling rates in CBR Improved VBR strategy when running out of bits LAME 3.98 beta 1 2007 5 16 Alexander Leidinger Add TLEN (ID3v2) support (Submitted by Linus Walleij). Add number of total tracks per album (ID3v2) support (Submitted by Kyle VanderBeek). Some seatbelts for overflowing arrays in the ID3v2 support. Update the RPM spec (Submitted by Kyle VanderBeek). Fix some mem-leaks in the error case. Update to newer autotools versions. Update to use a recent libsndfile (submitted by libsndfile author). Intrinsics support enabled for gcc Robert Hegemann The newer VBR code is now LAME s default VBR routine Fixed in case of not enough bits the new vbr code incorrectly used old vbr routine Improved ATH adjustment in low volume cases Fixed (PSY model) mapping from convolution bands to partition bands was broken since we replaced tables by own calculation several years ago Fixed (PSY model) loss of fraction in equal loudness weighting Fixed (PSY model) in NSPSY highpass filter, out of bounds access in fircoef Known problem samples for the new VBR code many of them are at an acceptable quality level now;with a big Thank You to Francis Niechcial Modified VBR strategy to handle out of bits cases Restricted bitreservoir size for 320 kbps frames to the size used for sideinfo, because of decoding problems with FhG decoders installed on almost every Windows system LAME aborts on unsupported input files or unrecognized parameter options passed more often now Bug tracker item [ 1596306 ] "fatal error during initialization";an invalid MPEG samplerate was returned by optimum_samplefreq function Bug tracker item [ 1585942 ] lame not --silent when TERM not set;in case LAME was build with TERMCAP defined and no TERM environment is defined, now we do not issue an error message and silently fallback to the default behaviour as if LAME was compiled without TERMCAP defined. Bug tracker item [ 1711980 ] LAME writes invalid Xing header when ID3 tags exist;LAME was sometimes writing an invalid Xing/Info header Feature request [ 1588283 ] Flushing output stream in lame.exe; flush option added Added FFTSSE and FFT3DNOW assembler code from Lame4 branch Changes in lame frontend switches -k removed, add lowpass and highpass switches if you need to change them; --short/noshort/allshort - degraded into DEVELOPER ONLY switches normal users shouldn t use them; -X -Z degraded to DEVELOPER ONLY switches, -X is too tough to communicate to end users and -Z isn t used actualy Fixed some console printing problems Windows ACM code now uses LAME library API only, all references to private include files are removed Windows DirectShow code now uses LAME library API only, all references to private include files are removed Windows disabled code that resets processor affinity, because this doesn t belong to LAME, but seems to work around some problems the parent process has (in most cases EAC) John33 Fixed mp2 and mp3 decoding For mp3 and mp2 decoding, this now yields the same output as foobar2000 but the error checking remains unchanged Gabriel Bouvigne VC8 project files Added support for x64 under VC8 Restricted MPEG 2.5 to 64kbps frames Takehiro Tominaga SSE version of FFT LAME 3.97 2006 9 24 3.97 beta 3 becomes 3.97 LAME 3.97 beta 3 2006 8 19 Gabriel Bouvigne Workaround against a short blocks detection issue LAME 3.97 beta 2 2005 11 26 Gabriel Bouvigne Fixed an initialization error when input is not using a standard sampling frequency Fixed a possible assertion failure in very low bitrate encoding Slight change regarding ATH adjustment with V5 Reinstated bit reservoir for 320kbps CBR ReplayGain analysis should now be faster when encountering silent parts Takehiro Tominaga Fixed a possible link problem of assembly code LAME 3.97 beta 1 2005 9 12 Takehiro Tominaga Fixed an out of array access in mp3rtp Fixed a quality setting in DLL Fixed display when using --silent Vitaly Ivanov Updated DirectShow interface Robert Hegemann Fixed an out of array access Fixed some small rounding problem in vbr-new quantization routines Fixed a bug in vbr-new regarding high frequencies (sfb21) when using -Y Fixed a few bugs in vbr-new when using -Y Updated scalefactors allocation scheme in vbr-new Fixed mingw32 configure problems Resolved some compiler warnings Updated command-line visualisation Gabriel Bouvigne Changed some FLOAT8 to FLOAT Added project files for VC7 Reworked -q1 and -q0 Updated presets Fixed an error in ISO quantization on systems not using the IEEE754 hack Faster quantization SSE version of init_xrpow Rog�io Brito Updated Debian packaging Documentation work Chris Miller Support for x64 platform SDK in makefile.msvc LAME 3.96.1 2004 7 25 Robert Hegemann Fixed a rare bug in vbr-new (could lead to crashes or data corruption) Gabriel Bouvigne some fixes in ACM codec fixed padding when encoding to 320kbps fixed block size selection for mid and side channels LAME 3.96 2004 4 11 Gabriel Bouvigne new quantization selection mode (used in ABR/CBR) set sfscale for ABR/CBR up to 160kbps LAME 3.96 beta 2 2004 3 28 Takehiro Tominaga removed unnecessary integer convertion in resampling Robert Hegemann reworked scalefactor allocation in vbr-new fixed a freeformat decoding problem Gabriel Bouvigne updated minimal bitrate for V1 and V2 Aleksander Korzynski added ability to disable ReplayGain analysis LAME 3.96 beta1 2004 3 7 Takehiro Tominaga fixed decoding issue Aleksander Korzynski changed internal ReplayGain handling fixed some issues when ReplayGain is used with resampling Robert Hegemann added standard ISO quantization for vbr-new, used at lower quality settings faster count_bits for vbr-new faster find_scalefac_ave function for vbr-new fixed an out of array access in psychoacoustic models; this bug could make some psy calculations worthless and sometimes let lame crash fixed an error on silent scalefactor bands; this bug resulted in huffman data overrun problems while decoding, resulting in audible glitches fixed a freeformat decoding bug Gabriel Bouvigne adjusted short block thresholds fixed some array addressing bugs made ReplayGain analysis reentrant David Chandler fixed a crash in quantize_xrpow Michal Bacik fixed a crash when using 8kHz Goran Markovic fixed some decoding bugs John Edwards fixed a too small buffer in ReplayGain code LAME 3.95.1 2004 1 12 Gabriel Bouvigne fixed a crash when using vbr-new changed ReplayGain reference level to 89dB LAME 3.95 2004 1 11 Gabriel Bouvigne fixed lowpass values when using vbr with mono files faster quantization loops faster count_bits fixed a buffer requirement error in ACM codec Takehiro TOMINAGA fixed mpglib and other decoding support code to prevent the crash when invalid mp3 input removed Layer I decoding support use FastLog and IEEE 754 hack on PowerPC too (approx. 10 percent faster) LAME 3.94 beta 2003 12 15 Takehiro Tominaga fixed block switching of nspsytune best huffman divide in the inner loop.This should improve the quality, but PAINFULLY slow. So it is not enabled by default. Use -q0 to use it. Changed -q option mapping. "-q2" until version 3.93 is now "-q3". saving bits by better scalefactor storing removed Vorbis support substep quantization.This should help breaking the SFB21 bloating problem made psychoacoustic model aware of ATH adjustements use ATH value as short block masking lower limit several fixes in psychoacoustic model more robust decoding Mark Taylor / Gabriel Bouvigne fixed issues in VBR header Mark Taylor workaround against some hardware decoder defficiencies Aleksander Korzynski ability to compute the "Radio" ReplayGain and detect clipping on the fly. The ReplayGain value is stored in the Lame tag. Gabriel Bouvigne work on presets use presets by default for cbr/abr use presets by default for vbr analog silence detection in partitionned sfb21 do not compute noise in upper 0 part of the spectrum only compute noise in modified scalefactor bands Guillaume Lessard nogap related changes Alexander Leidinger prevent closing the input fd prematurely if the input is a named pipe LAME 3.93.1 2002 12 1 Gabriel Bouvigne preset medium added to the dll interface fix for abr/cbr presets fix -q0 switch Alexander Leidinger fix link problem on systems where socket() resides in libsocket LAME 3.93 2002 11 16 Takehiro Tominaga bit allocation for pre-echo control improved for single channel encodings substep noise shaping optimizations by changing data structure noise shaping model 2 fix nspsytune FIR filter clean up fix small psymodel bugs(DC current estimation, preecho detection of non-VBR mode, and nspsymode initialization) portability fixes for Tru64 UNIX Albert Faber some fixes in the DLL Simon Blandford fixes for channel scaling in mono mode Dominique Duvivier some optimizations and a faster log10 function Mark Taylor some tag related fixes in the direct show filter and in the ACM codec fixed a mono encoding bug found by Justin Schoeman calc_noise bug fix other fixes Alexander Leidinger update to autoconf 2.53, rewrite some configure tests Akos Maroy determine gcc version even with gcc 3.1 Andrew Bachmann compile shared libs on BeOS (and perhaps other arches) ultrasparc switches for gcc 3.1 fixes for SunOS 4.x fixes for 64bit arches CFLAGS fix for IRIX don t override CFLAGS if exptopt isn t requested Robert Hegeman some fixes some fixes for VBR Gabriel Bouvigne --noasm switch. Might help Cyrix/Via users presets and alt-presets merged LAME 3.92 2002 4 14 Alexander Leidinger add non linear psymodel (compile time option, disabled by default), workaround a bug in gcc 3.0.3 (compiler options, based upon suggestions from various people, see archives and changelog for more) Steve Lhomme ACM wrapper (MS-Windows codec) Steve Lhomme less memory copying on stereo (interleaved) input Takehiro Tominaga Inter-channel masking, enables with --interch x option For buggy versions of gcc compiler (2.96*), back off on some of the advanced compiler options LAME 3.91 2001 12 29 Darin Morrison Bugfix for --alt-preset (for content with low volume, clean vocals), only important for the "fast standard" preset Alexander Leidinger add some missing files to the distribution add --alt-preset to the man page LAME 3.90 2001 12 21 Many small improvements and bug fixes not added to history John Dahlstrom more fine tuning on the auto adjustment of the ATH Robert Hegemann small speed and quality improvements for the old VBR code (--vbr-old). Robert Hegemann some short block bug fixes Robert Hegemann Big improvements to --vbr-mtrh, now encodes much more frequencies over 16khz Robert Hegemann --vbr-new code disabled (outdated and lower quality) and replaced with --vbr-mtrh (Both --vbr-new and --vbr-mtrh now default to mtrh) Robert Hegemann reordering of --longhelp to give more information, --extrahelp dropped Darin Morrison Totally revamped and extremely high quality unified preset system and other general quality improvements now available with --alt-presets some improvements to psychoacoustics (vast improvements over default L.A.M.E. modes) when --alt-preset is used including Improved tuning of short block usage. Improved quantization selection usage (the -X modes), now adapts between appropriate modes on the fly. Also helps on "dropout" problems and with pre-echo cases. Improved joint stereo usage. Thresholds are better tuned now and fix some "dropout" problems L.A.M.E. suffers from on clips like serioustrouble. Improved noise shaping usage. Now switches between noise shaping modes on the fly (toggles -Z on and off when appropriate) which allows lower bitrates but without the quality compromise. Clips vastly improved over default L.A.M.E. modes (vbr/cbr/abr, including --r3mix) castanets, florida_seq, death2, fatboy, spahm, gbtinc, ravebase, short, florida_seq, hihat, bassdrum, 2nd_vent_clip, serioustrouble, bloodline, and others. No degraded clips known. VBR bitrates are now more "stable" with less fluctuation -- not dipping too low on some music and not increasing too high unnecessarily on other music. "--alt-preset standard" provides bitrates roughly within the range of 180-220kbps, often averaging close to 192kbps. --alt-presets replace the --dm-presets and "metal" preset is removed and replaced with generic abr and cbr presets. --alt-preset extreme (note the e ) replaces xtreme to help eliminate some confusion --alt-preset vbr modes now have a fast option which offers almost no compromise in speed. --alt-preset standard (and "fast standard") are now much lower in bitrate, matching --r3mix with an overall average, though offering higher quality especially on difficult test samples. --alt-presets are no longer just "presets" as in a collection of switches, instead they are now quality "modes" because of special code level tunings (those mentioned above). Use --alt-preset help for more information. Roel VdB more tuning on the --r3mix preset Jon Dee, Roel VdB INFO tag Alexander Leidinger, mp3gain@hotmail.com added --scale-l and --scale-r to scale stereo channels independantly Takehiro Tominaga new noise shaping mode, offering more "cutting edge" shaping according to masking, enabled via -q0 Mark Taylor More work on --nogap Gabriel Bouvigne Small changes to abr code for more accurate final bitrate Gabriel Bouvigne, mp3gain@hotmail.com PreliminaryReplayGainanalysis code added (not functional yet) Gabriel Bouvigne, Alexander Leidinger Documentation updates John Dahlstrom, DSPguru@math.com floating point interface function in the Windows DLL LAME 3.89beta 2001 7 5 John Stewart long filename support for Win9x/NT. Takehiro Tominaga LAME can calculate the CRC of VBR header, so now "lame -pv" works fine. Robert Hegemann Improvements of the new VBR code (--vbr-mtrh). Robert Hegemann New VBR code (--vbr-mtrh) is now defaulted to get more feedback. The VBR speed is now on par with CBR. We will use the old VBR code in the release. Gabriel Bouvigne Change of the maximum frame size limit. LAME should now be more friendly with hardware players. Gabriel Bouvigne Size of VBR is now more balanced according to the -V value. Alexander Leidinger Finished the implementation of the set/get functions. John Dahlstrom LAME now handles 24bits input Mark Taylor bugs in lame --decode causing truncation of mp3 file fixed Mark Taylor preliminary --nogap support "Final" API completed shared library safe! This API is frozen and should be backwords compatiable with future versions of libmp3lame.so, but we will continue to add new functionality. LAME 3.88beta 2001 3 25 A lot of work that was never added to the History! Frank Klemm and Gabriel Bouvigne New ATH formula. Big improvement for high bitrate encodings. Takehiro Tominaga Temporal masking Gabriel Bouvigne/Mark Taylor auto adjustment of ATH Robert Hegemann Better outer_loop stopping criterion. Enabled with -q2 or better. Robert Hegemann/Naoki Shibata slow/carefull noise shaping. -q3..9 amplify all distorted bands. -q2 amplify distorted bands within 50%. -q1-0 amplify only most distorted band at each iteration. Takehiro Tominaga Interframe, shortblock temporal masking. Takehiro Tominaga LAME restructured into a shared library and front end application. Slight changes to the API. More changes are coming to turn LAME into a true shared library (right now you have to recompile if you upgrade the library -( Naoki Shibata improvements to psychoacoustics(--nspsytune) BUG in long block pre echo control fixed(some out of range array access in M/S psychoacoustics) Ralf Kempkens Visual Basic Script for lame, suggested to put it on your Windows Desktop and you can drag n drop Waves to encode on it. Alexander Stumpf improved lame.bat for 4Dos users Mark Taylor Several bugs fixed in the resampling code. Frank Klemm, Robert Hegemann added assembler code for CPU feature detection on runtime (MMX, 3DNow, SIMD) Takehiro Tominaga 3DNow FFT code. Florian Bome, Alexander Leidinger more work on configure stuff Alexander Leidinger automake/libtool generated Makefiles and TONS of other work. Alexander Leidinger Much work towards shared library style API. Anonymous New more efficient RTP code. Mark Taylor psycho-acoustic data now computed for all scalefactor bands (up to 24 kHz) Mark Taylor, Takehiro Tominaga All ISO table data replaced by formulas - should improve MPEG2.5 results for which we never had correct table data. LAME 3.87alpha 2000 9 25 Mark Taylor Bug fixed in LAME/mpglib error recovery when encountering a corrupt MP3 frame during *decoding*. Albert Faber added LayerI+II decoding support Frank Klemm added improved CRC calculation Frank Klemm substantial code cleanup/improvements Robert Hegemann Bug fixes in huffman_init, could lead to segmentation faults (only in rare cases, most likely at lower sample rates) M/S switching at lower sample rates(the fact there is no 2nd granule was ignored) Robert Hegemann speed up in VBR Jarmo Laakkonen Amiga/GCC settings for Makefile.unix. Magnus Holmgren README and Makefile for (free) Borland C++ compiler. Will also compile lame_enc.dll, but this is untested. Florian Bome LAME finally has a ./configure script!! LAME 3.86beta 2000 8 6 Christopher Wise A makefile for DJGPP, the DOS version of gcc. Now most windows users should be able to compile LAME with minimal effort. Robert Hegemann old VBR fixed some bugs and Takehiro s scalefac_scale feature (not yet on by default.) older LAME versions did not allow to spent more than 2500 bits of 4095 possible bits to a granule per channel, now fixed. Robert Hegemann new VBR analog silence treatment like in old VBR William Welch Improved options for Linux/Alpha gcc and ccc compilers in Makefile. Mathew Hendry setting appropriate CRC bit for additional Xing-VBR tagging frame Don Melton added ID3 version 2 TAG support John Dahlstrom fixed bug allowing timing information (for status in command line encoder) to overflow. Tamito KAJIYAMA, Fixed several bugs in the LAME/Vorbis interface. Mark Taylor lame --decode will recognizeAlbum ID tags Naoki Shibata Additive masking and other improvements to psycho acoustics. (not yet on by default) LAME 3.85beta 2000 7 3 Takehiro Tominaga mid/side stereo demasking thresholds updated. Takehiro Tominaga New short block MDCT coefficient data structure. Should allow for future speed improvements. Robert Hegemann fixed bug in old VBR routine, the --noath mode messed up the VBR routine resulting in very large files Robert Hegemann found bugs in some sections when using 32 bit floating point. Default is now back to 64bit floating point. Takehiro Tominaga Modified PE formula to use ATH. S.T.L. README.DJGPP - instructions for compiling LAME with DJGPP, the dos version of gcc. LAME 3.84beta 2000 6 30 Mark Weinstein .wav file output (with --decode option) was writing the wrong filesize in the .wav file. Now fixed. Mark Taylor (optional) Vorbis support, both encoding and decoding. LAME can now produce .ogg files, or even re-encode your entire .ogg collection into mp3. (Just kidding it is always a bad idea to convert from one lossy format to another) ? Bug fixed causing VBR to crash under windows. (pretab[] array overflow) Sergey Sapelin Another bug found in the mpg123 MPEG2 tables. Now fixed for the mpg123 based decoder in LAME. Marco Remondini VBR histogram works in win32. compile with -DBRHIST -DNOTERMCAP Takehiro Tominaga LAME CBR will now use scalefac_scale to expand the dynamic range of the scalefactors. Iwasa Kazmi Library improvements exit() s, printf, fprintf s are being replaced by interceptable macros. LAME 3.83beta 2000 5 19 Mark Taylor Bug in buffering routines in some cases, could cause MDCT to read past end of buffer. Rare in MPEG2, even more rare for MPEG1, but potentially serious! Mark Taylor MDCT/polyphase filterbank was not being "primed" properly. Does not effect output unless you set the encoder delay lower than the default of 576 samples. Mark Taylor "vdbj" and "Caster" found several VBR bugs (now fixed) 1. Analog silence detection only checked frequencies up to 16 kHz. 2. VBR mode could still somehow avoid -F mode. 3. VBR mode would ignore noise above 16 kHz (scalefactor band 22), Now calc_noise1 will compute the noise in this band when in VBR mode. Not calculated in CBR mode since CBR algorithm has no way of using this information. Mark Taylor scalefactor band 22 info (masking(=ATH), noise and energy) now displayed in frame analyzer. VBR code ATH tuning was disabled by accident in 3.81, now fixed. Mark Taylor lame --decode will produce .wav files. (oops - size is off by a factor of 4) LAME 3.82beta 2000 5 11 Robert Hegemann Fixed bug in high bitrate joint stereo encodings. Naoki Shibata new long block MDCT routine LAME 3.81beta 2000 5 8 all ISO code removed! Takehiro Tominaga and Naoki Shibata new window subband routines. Naoki Shibata Bug fix in mpglib (decoding) lib in some cases, MDCT coefficients from previous granule was incorrectly used for the next granule. ISO 7680 bit buffer limitation removed. It can be reactivated with "--strictly-enforce-ISO" Please report any trouble with high bitrates. LAME 3.80beta 2000 5 6 Takehiro Tominaga more efficient and faster huffman encoding! Takehiro Tominaga and Mark Taylor much improved short block compression! Tomasz Motylewski and Mark Taylor MPEG2.5 now supported! Mark Taylor incorporated Takehiro s bitstream.c! bitstream.c used by default, but old ISO bitstream code can also be used. Scott Manley and Mark Taylor good resampling routine finaly in LAME. uses a 19 point FIR filter with Blackman window. Very slow for non integer resampling ratios. Iwasa Kazmi fixed SIGBUS error VBR and id3 tags were using data after it was free() d. Robert Hegemann Improved VBR tuning. #define RH_QUALITY_CONTROL and #RH_SIDE_VBR now the defaults. Robert Hegemann LAME version string now added to ancillary data. Kimmo Mustonen VBR histogram support for Amiga. Casper Gripenberg VBR stats (but not histogram) for DOS verson. Robert Hegemann rare VBR overflow bug fixed. Zack -F option strictly enforces the VBR min bitrate. Without -F, LAME will ignore the minimum bitrate when encoding analog silence. Shawn Riley User can now specify a compression ratio (--comp arg ) instead of a bit rate. Default settings based on a compression ratio of 11.0 Mark Taylor free format bitstreams can be created with --freeformat, and specify any integer bitrate from 8 to 320kbs with -b. Mark Taylor lame be used as a decoder (output raw pcm only) lame --decode input.mp3 output.pcm LAME 3.70 2000 4 6 "LAME 3.69beta" becomes LAME 3.70 "stable" LAME 3.69beta 2000 4 6 "spahm" default mode selection bug fixed. In some cases, lame was defaulting to regular stereo instead of jstereo when the user did not specify a mode. LAME 3.68beta 2000 4 4 Mark Taylor mono encoding bug in DLL fixed. Ingo Saitz bug in --cwlimit argument parsing fixed. Scott Manly bug in 4-point resample code fixed. LAME 3.67beta 2000 3 27 Robert Hegemann jstereo now enabled for MPEG2 encodings Mark Taylor old M/S stereo mode which used L/R maskings has been removed. Mark Taylor Xing MPEG2 VBR headers now working. Mark Taylor When quantized coefficients are all 0 in a band, set scalefactors to 0 also to save a few bits. Ingo Saitz Problems with framesize calculation when using -f fast-math option fixed. LAME 3.66beta 2000 3 21 Bug fixes in BladeEnc DLL, possible click in last mp3 frame, VBR historgram display, byteswapping option, ASM quantize routines work for both float and double. LAME 3.65beta 2000 3 17 Enabled ASM version of quantize_xrpow() - accidently disabled in lame3.64. LAME 3.64beta 2000 3 16 Don Melton id3v1.1 tags id3 bugfixes Gabriel Bouvigne L/R matching block type fix Bug fixed which was allowing quantized values to exceed the maximum when not using -h Mark Taylor Fitlers based on polyphase filterbank. should be slightly better since the responce is independent of the blocktype, and they are slightly faster. Mark Taylor API the API changed slightly - and this should be the final version. There is a new routine lame_encode_buffer() which takes an arbritray sized input buffer, resamples filters if necessary, encodes, and returns the mp3buffer. There are also several new #defines, so it is possible to compile a simple encoding library with no decoding or file I/O or command line parsing. see the file API for details. Mark Taylor MSVC stuff lame.exe (with and without the frame analyzer) and the CDex lame_enc.dll should compile under MSVC. The MSVC5 project files may need some tweaking. In particular, you need to make sure LAMEPARSE, LAMESNDFILE and HAVEMPGLIB are defined. (and HAVEGTK for the GTK stuff). LAME 3.63beta 2000 2 20 Robert Hegemann FPE with -h fixed? Mathey Hendry FPE error catching for Cygwin, FPE fix for vbr mode and output to /dev/null Jeremy Hall Fixed problems with input files where the number of samples is not known. Mathew Hendry ASM quantize_xrpow() for GNU i386 Wilfried Behne quantize_xrpow ()for PowerPC and non-ASM Takehiro Tominaga GOGO FFTs (not yet used?) LAME 3.62beta 2000 2 9 Iwasa Kazmi frame analyzer short block display of single subblocks (press 1,2 or 3) Ingo Saitz --help option added, with output to stdout Alfred Weyers short block AAC spreading function bug fixed Takehiro Tominaga new scalefac data structure - improves performance! Lionel Bonnet Bug fixed in MPEG2 scalefactor routine scalefactors were being severly limited. Takehiro Tominaga faster FFT routines from. These routines are also compatible with the GOGO routines, in case someone is interested in porting them back to LAME. Sigbjørn Skjæret, Takehiro Tominaga faster pow() code. Joachim Kuebart Found some unitialized variables that were effecting quality for encodings which did not use the -h option (now fixed). Mark Taylor More modularization work. It is now possible to use LAME as a library where you can set the encoding parameters directly and do your own file i/o. The calling program is now it s own mp3 output. For an example of the LAME API, see main.c, or mp3rtp.c or mp3x.c. These can all be compiled as stand alone programs which link with libmp3lame.a. Felix vos Leitner mp3rtp fixes. mp3rtp is a standalone program which will encode and stream with RTP. Robert Hegemann Information written to stderr displaying exactly which type of lowpass filter (if any) is being used. Iwasa Kazmi mpglib (the mpg123 decoder) scsfi decoding fixes. Takehiro Tominaga More mpglib scsfi decoding fixes. LAME 3.61beta 2000 1 14 Mark Taylor Fixed bug with lowpass filters when using VBR with a 64kbs or lower min bitrate setting. Takehiro Tominaga more efficient huffman encoding splitting. LAME 3.60beta 2000 1 9 Mark Taylor Distribution now comes with self test. Needs work to be automated, see make test in Makefile. Mark Taylor AAC spreading function now the default Gabriel Bouvigne updated HTML docs Felix von Leitner compute correct file length from Xing header (if present) when input file is a mp3 file Felix von Leitner mp3rtp (standalone) program now included. Not yet tested. mp3rtp ip port ttl infile /dev/null will stream directly to ip port using RTP. LAME 3.59beta 2000 1 4 Takehiro Tominaga --noath option. Disables ATH maskings. Gabriel Bouvigne updated HTML docs. Iwasa Kazmi makefile fixes Mark Taylor Fixed bug where first frame of data was always overwritten with 0 s. Thanks to gol Mark Taylor bug fixes in mid/side masking ratios (thanks to Menno Bakker) Mark Taylor replaced norm_l, norm_s table data with formulas. LAME 3.58beta 1999 12 13 Segher Boessenkool More accurate quantization procedure! Enabled with -h. Mathew Hendry, Acy Stapp and Takehiro Tominaga ASM optimizations for quantize_xrpow and quantize_xrpow_ISO. Chuck Zenkus "encoder inside" logo on web page Mark Taylor a couple people have asked for this. Allow LAME to overide VBR_min_bitrate if analog_silence detected. Analog_silence defined a la Robert energy ATH. An Van Lam Valid bitrates were being printed for layer 2, not layer 3! Ethan Yeo Makefile.MSVC updated Mark Stephens updated all MSVC project files Robert Hegemann lowpass and highpass filters can be enabled with --lowpass, --highpass Mark Taylor MS switching is now smoother ms_ratio average over 4 granules Takehiro Tominaga Scalefactor pre-emphasis fixed (and now turned back on) Takehiro Tominaga Bug in M/S maskings switch to turn on stereo demasking code was buggy. LAME 3.57beta 1999 11 22 Sigbjørn Skjæret, patch to allow encoding from 8bit input files when using LIBSNDFILE Mark Taylor Automatic downsampling to nearest valid samplerate. Mark Taylor Scalefactor bands demarked on MDCT plot in frameanalyzer Mark Taylor Scalefactor preemphasis disabled for now. The algorithm was often doing more harm than good. LAME 3.56beta 1999 11 19 Kimmo Mustonen portabilty code cleanup. Vladimir Marek id3 genre patch. Conrad Sanderson new applypatch script. Mark Taylor Initial window type now "STOP_TYPE" to reduce initial attenuation. This is needed because the new encoder delay is so short. With a NORM_TYPE, the first 240 samples would be attenuated. Mark Taylor Padding at end of file now adjusted (hopefully!) to produce as little padding as possible while still guarantee all input samples are encoded. Takehiro Tominaga Reduced shortblock extra bit allocation formulas by 10% since new huffman coding is at least 10% more efficient. LAME 3.55beta 1999 11 11 Albert Faber updated BladeEnc.dll Mark Taylor Simple lowpass filter added to linear downsampling routine. Nils Faerber updated man page. Mark Taylor All floating point variables are delcared FLOAT or FLOAT8. Change the definition of FLOAT8 in machine.h to run at 32bit preceision. Mark Taylor Bug (introduced in 3.54beta) in stereo- mono downsampling fixed. LAME 3.54beta 1999 11 8 Mark Taylor Encoder delay is now 48 samples. Can be adjusted to 1160 to sync with FhG (see ENCDELAY in encoder.h) This is kind of amazing, since if Takehiro put his MDCT/filterbank routine in a decoder, we could have a total delay of only 96 samples. Mark Taylor More inconstancies found and fixed in MPEG2 tables. Mark Taylor Resampling from an MP3 input file now works. But we still dont have a lowpass filter so dont expect good results. LAME 3.53beta 1999 11 8 Takehiro Tominaga Fixed MPEG2 problem in new MDCT routines. Takehiro s combined filterbank/MDCT routine is now the default. Removes all buffering from psymodel.c and the filterbanks/MDCT routines. LAME 3.52beta 1999 11 8 By permission of copyright holders of all GPL code in LAME, all GPL code is now released under a modified version of the LGPL (see the README file) By popular demand, all C++ comments changed to C style comments Mark Taylor Linear resampling now works. Use --resample to set an output samplerate different from the input samplerate. (doesn t seem to work with mp3 input files, and there is no lowpass filter, so dont expect good results just yet) Takehiro Tominaga Faster Huffman encoding routines The following changes are disabled because of MPEG2 problems. But to try them, set MDCTDELAY=48 in encoder.h, instead of MDCTDELAY=528. Takehiro Tominaga New MDCT routines with shorter delay (48 samples instead of 528) and even faster than the old routines. Takehiro Tominaga Removed extra buffering in psymodel.c LAME 3.51 1999 11 7 Takehiro Tominaga Bug in quantize.c absolute threshold of hearing calculation for non-44.1 kHz input files. LAME 3.50 1999 11 1 LAME 3.37beta becomes official LAME 3.50 release LAME 3.37beta 1999 11 1 Lionel Bonnet Found severe bug in MPEG2 Short block SNR. Sergey Sapelin VBR Toc improvement. Sergey Dubov fskip() routine Conrad Sanderson replacement for filterbank.c. Not much faster but amazingly simpler. LAME 3.36beta 1999 10 25 Albert Faber more MSVC and BladeDLL updates Kimmo Mustonen Much code cleanup and Amiga updates Anton Oleynikov Borland C updates Mark Taylor More stdin fixes For some reason, forward fseek() s would fail when used on pipes even though it is okay with redirection from " ". So I changed all the forward fseek() s to use fread(). This should improve stdin support for wav/aiff files. If you know the input file is raw pcm, you can still use the -r option to avoid *all* seeking of any kind. LAME 3.35beta 1999 10 21 Leonid Kulakov Serious bug in MPEG2 scalefactor band tables fixed. Portability patches from Anton Oleynikov, Sigbjørn Skjæret, Mathew Hendry, Richard Gorton Alfred Weyers compiler options, updated timestatus. Albert Faber BladeDll and other updates (new machine.h). Monty updated Makefile to fix gcc inline math bug. LAME 3.34beta 1999 10 12 Mark Taylor Bug fixed minimum bitrate in VBR mode could be ignored for a few frames. Mark Taylor New (minor) VBR tunings. Tim Ruddick New wav/aiff header parsing routines. Better parsing and fewer fseek() s. Anton Oleynikov patches to work with Borland C Gabriel Bouvigne Experimental voice option enabled with --voice LAME 3.33beta 1999 10 11 Robert Hegemann RH VBR mode now the default and only VBR mode. The new code will always quantize to 0 distortion and the quality is increased by reducing the masking from the psy-model. -X0 is still the default for now. Robert Hegemann new -X5 mode Mathew Hendry New timing code, removes the need for HAVETIMES Mathew Hendry assembler quantize_xrpow for Windows Iwasa Kazmi stdin/stdout patch for Windows Mark Taylor New option "--athonly" will ignore the psy-model output and use only the absolute threshold of hearing for the masking. LAME 3.32beta 1999 10 8 Takehiro Tominaga faster long block spreading function convolution for non 44.1 kHz sampling frequencies, and faster short block spreading function convolution for all sampling frequencies. Takehiro Tominaga Completly rewritten huffman table selection and count_bits(). More efficient table selection results in many more bits per frame. Takehiro Tominaga More efficient scalefac compress setting. Mike Cheng new calc_noise2() Alfred Weyers patch for timestatus() seconds rollover LAME 3.31beta 1999 9 28 Albert Faber updated his BladeDLL code. This allows LAME to be compiled into a BladeEnc compatiable .dll. Mike Cheng faster l3psycho_ener() routine. Sigbjørn Skjæret more code cleanup. LAME 3.30beta 1999 9 27 Conrad Sanderson ID3 tag code added (type lame for instructions) new mdct.c from Mike Cheng (no faster, but much cleaner code) Mathew Hendry Microsoft nmake makefile and a couple other changes for MSVC More modulization work One input sound file interface handles mp3 s, uncompressed audio, with or without LIBSNDFILE. Fixes (hopefully) a bunch of file I/O bugs introduced in 3.29 (Mark Taylor) LAME will now print valid samplerate/bitrate combinations (Mark Taylor) stdin/stdout fix for OS/2 (Paul Hartman) For mp3 input files, totalframes estimated based on filesize and first frame bitrate. (Mark Taylor) Updated all functions with new style prototypes. (Sigbjørn Skjæret) LAME 3.29beta 1999 9 21 Bug in bigv_bitcount fixed. Loop.c was overestimating the number of bits needed, resulting in wasted bits every frame. (Leonid A. Kulakov) Bug in *_choose_table() fixed These routines would not sellect the optimal Huffman table in some cases. (Leonid A. Kulakov) Tuning of ATH normalization (macik) Removed unused variables and fixed function prototypes (Sigbjørn Skjæret) Sami Farin sent a .wav file that LAME built in support choked on. I added a slightly more sophisticated wav header parsing to handle this, but if you have trouble, use libsndfile. Resampling hooks and options added. Buffering and resampling routines need to be written. LAME will now take an mp3 file as input. When resampling code is working, LAME will be able to (for example) convert a high bitrate stereo mp3 to a low bitrate mono mp3 for streaming. LAME 3.28beta 1999 9 15 Serious bug fixed in high frequency MDCT coefficients. Huffman coding was reversing the order of the count1 block quadruples. (Leonid A. Kulakov) nint() problems under Tru64 unix fixed and preprocessor variable HAVE_NINT removed. (Bob Bell) Compiler warning fixes and code cleanup (Sigbjørn Skjæret, Lionel Bonnet) USAGE file now includes suggestions for downsampling. For low bitrate encodings, proper downsampling can give dramatically better results. (John Hayward-Warburton) LAME 3.27beta 1999 9 12 Several bugs in encode.c and l3bitstream.c fixed by Lionel Bonnet. Bugs in new VBR (#define RH) formula for mono input file and mid/side encoding fixed. LAME 3.26beta 1999 9 10 The "-m m" option (mono .mp3 file) will automatically mix left and right channels if the input file is stereo. (Alfred Weyers) New quant_compare algorithm (method for deciding which of two quantizations is better) enabled with -X4 (Greg Maxwell) New mid/side VBR bit allocation formula. Mid channel bits are set by the quality requirements, and then the side channel uses a reduced number of bits (in a proportion coming from the fixed bitrate code). This might not be optimal, but it should be pretty good and no one knows what the optimal solution should be. (Greg Maxwell) New VBR (#define RH) tunings based on detailed listening tests by Macik and Greg Maxwell. Sigbjørn Skjæret fixed several compiler warnings (which turned out to be potential bugs) Takehiro Tominaga fixed a low bitrate bug in reduce_side() Alfred Weyers fixed some buffer overflows. New ATH (absolute threshold of hearing) formula replaces buggy ISO code, and adds analog silence treatment (removal of coefficients below below ATH). These are turned on by default but have not been fully tested. (Robert Hegemann) Bug in short block spreading function fixed. (Robert Hegemann) LAME 3.25beta 1999 8 22 Sigbjørn Skjæret fixed a zero byte malloc call. This bug was introduced in 3.24 and causes problems on non Linux systems. Bit allocation routines would sometimes allocate more than 4095 bits to one channel of one granule. A couple of people reported problems that might be caused by this, especially at higher bitrates. Nils Faerber updated the man page and fixed many of the compiler warnings. LAME 3.24beta 1999 8 15 This release contains the following new code (for developers) which is disabled by default Robert Hegemann Completely overhauled VBR code. Now computes exact number of bits required for the given qualty and then quantized with the appropriate bitrate. Several new quantization quality measures. LAME 3.23beta 1999 8 8 Very nice continuously updated VBR histogram display from Iwasa Kazmi. (disabled with --nohist). More modulerization work. The encoding engine can now be compiled into libmp3lame, but the interface is awkward. Bug fixed in FFT Hann window formula (Leonid A. Kulakov). New LAME logo on the download page. Created by Chris Michalisles. Several VBR algorithm improvements from Robert Hegemann. New quantization noise metrics and VBR quality measure takes into account mid/side encoding. Should produce smaller files with the same quality, especially when using jstereo. LAME 3.22beta 1999 7 27 Downsampling (stereo to mono) bug with MPEG2 fixed. (Mike Oliphant) Downsampling now merges L R channels - before it only took the L channel. More modularization and code cleanup from Albert Faber and myself. Input filesize limit removed for raw pcm input files. For other file types, LAME will still only read the first 2^32 samples, (27 hours of playing time at 44.1 kHz). LAME 3.21beta 1999 7 26 Correct Mid/Side masking thresholds for JSTEREO mode! This is enabled with -h. It makes LAME about 20% slower since it computes psycho-acoustics for L,R Mid and Side channels. "Analog silence" threshold added. Keeps VBR from upping the bitrate during very quite passages. (Robert.Hegemann) New VBR quality setting from Robert Hegemann. It is based on the idea that distortion at lower bit rates sounds worse than at higher bitrates, and so the allowed distortion (VBR quality setting) is proportional to the bitrate. Because of this, default minimum bitrate is now 32kbs. Expermental subblock gain code enabled with -Z. New "-r" option for raw pcm input files. With -r, LAME will not do any fseek() s or look for wav and aiff headers on the input file. Bug fixes in mp3x (frame analyzer) for viewing frames near end of the file. Bug fixed to allow setting the sampling rate of raw pcm input files. LAME 3.20beta 1999 7 19 Bug in get_audio.c fixed. Libsndfile wrappers would not compile (Miguel Revilla Rodriguez) Nils Faerber found some unitialized variables and some wierd extranous computations in filter_subband, now fixed. This was causing seg faults on some machines. LAME 3.19beta 1999 7 18 Oops! Robert Hegemann immediatly found a bug in the new (old -Z option) quantization code. calc_noise1 was not returning tot_noise, so non ms-stereo frames were buggy. LAME 3.18beta 1999 7 17 Many psycho-acoustic bug fixes. Dan Nelson discovered a bug in MPEG2 For short blocks, the code assumes 42 partition bands. MPEG1 sometimes has less, MPEG2 can have more. In MPEG1, this bug would not have effected the output if your compiler initializes static variables to 0 on creation. In MPEG2 it leads to array out-of-bounds access errors. Finally, there was a related bug in MPEG1/MPEG2, short long blocks where the energy above 16 kHz was all added to partition band 0. (the lowest frequeny partition band!) The -Z option (Gabriel Bouvigne s idea of using total quantization noise to choose between two quantizations with the same value of "over") is now the default. I believe this helps remove the trilling sound in Jan s testsignal4.wav. The quality of testsignal2.wav and testsignal4.wav are now better than Xing and getting closer to FhG. Bug fixes in frame sample count for downsampling mode. (ben "jacobs") Patches to improve modulization. (ben "jacobs") LAME 3.17beta 1999 7 11 substantial code cleanup towards goal of making LAME more modular. LAME 3.16beta 1999 7 11 New tunings of window switching, and better bit allocation based on pe. (Jan Rafaj. improves both testsignal2.wav and testsignal4.wav). Bug in mid/side quantization when side channel was zero fixed. (Albert Faber) Removed some extranous computations in l3psy.c (Robert Hegemann) More detailed timing status info, including hours display. (Sakari Ailus) and percentage indicator (Conrad Sanderson). Window_subband and calc_noise1,calc_noise2 speedups. Quantize_xrpow speedup should be significant on non GNU/intel systems. (Mike Cheng) Better initial guess for VBR bitrate. Should speed up VBR encoding. (Gabriel Bouvigne) More advanced .wav header parsing. fixes bugs involving click in first frame. (Robert.Hegemann) Correct filesize and total frame computation when using LIBSNDFILE (ben "jacobs") Click in last frame (buffering problem) when using libsndfile fixed. Audio I/O code overhauled. There is now a uniform audio i/o interface to libsndfile or the LAME built in wav/aiff routines. All audio i/o code localized to get_audio.c. LAME 3.15beta times()/clock() problem fixed for non-unix OS. (Ben "Jacobs") Fixed uninitialized pe[] when using fast mode. (Ben "Jacobs") LAME 3.13 1999 6 24 Patches for BeOS from Gertjan van Ratingen. Makefile info for OS/2 Warp 4.0 (from dink.org). Status display now based on wall clock time, not cpu time. mem_alloc no longer allocates twice as much memory as needed (Jan Peman). 3.12pre9 Updated BLADEDLL code to handle recent changes (Albert Faber). Bug fixed in parsing options when not using GTK (Albert Faber). MPEG2 Layer III psycho acoustics now working. Improved huffman encoding Chris Matrakidis. (10% faster). I dont know how he finds these improvements! LAME with full quality now encodes faster than real time on my PII 266. Fixed time display when encoding takes more than 60 minutes. 3.12pre8 Newmid/side stereocriterion. LAME will use mid/side stereo only when the difference between L R masking thresholds (averaged over all scalefactors) is less then 5db. In several test samples it does a very good job mimicking the FhG encoder. Bug in mid/side stereo fixed independent variation of mid side channel scalefactors disabled. Because of the way outer_loop is currently coded, when encoding mid/side coefficietns using left/right thresholds, you have to vary the scalefactors simultaneously. Bug in side/mid energy ratio calculation fixed. (Thanks to Robert Hegemann) Default mode is stereo (not jstereo) if bitrate is chosen as 192kbs or higher. Tero Auvinen first pointed out that FhG seems to think at 160kbs, their encoder is so good it doesn t need jstereo tricks. Since LAME is not as good as FhG, I am going to claim that 192kbs LAME is so good it doens t need jstereo tricks, and thus it is disabled by default. WAV header parsing for big-endian machines, and automatic detection of big-endian machines. (Thanks to Sigbjørn Skjæret). added 56 sample delay to sync LAME with FhG. MP3x (frame analyzer) can now handle MPEG2 streams. 3.12pre7 MPEG2 layer III now working! lower bit rates (down to 8kbs) and 3 more sampling frequencies 16000, 22050, 24000Hz. Quality is poor - the psy-model does not yet work with these sampling frequencies. Fixed "ERROR outer_loop() huff_bits 0." bug when using VBR. bash and sh scripts to run LAME on multiple files now included. (from Robert Hegemann and Gerhard Wesp respectively) bug fix in encoding times for longer files from (Alvaro Martinez Echevarria) yet another segfault in the frame analyzer fixed. ISO psy-model/bit allocation routines removed. This allowed makeframe() to be made much simpler, and most of the complicated buffering is now gone. Eventually I would like the encoding engine to be a stand alone library. 3.12pre6 Better VBR tuning. Find minimum bitrate with distortion less than the allows maximum. A minimum bit rate is imposed on frames with short blocks (where the measured distortion can not be trusted). A minimum frame bitrate can be specified with -b, default=64kbs. LIBSNDFILEsupport. With libsndfile, LAME can encode almost all sound formats. Albert Faber did the work for this, including getting libsndfile running under win32. CRC checksum now working! (Thanks to Johannes Overmann ) frame analyzer will now work with mono .mp3 files more code tweeks from Jan Peman. Compaq-Alpha(Linux) fixes and speedups from Nils Faerber. Faster bin_search_StepSize from Juha Laukala. Faster quantize() from Mike Cheng Faster quantize_xrpow() from Chris Matrakidis. xrpow_flag removed since this option is now on by default. Fixed .wav header parsing from Nils Faerber. Xing VBR frame info header code from Albert Faber. "Xing" and "LAME 3.12" embedded in first frame. Bug in VBR bit allocation based on "over" value fixed. LAME 3.11 1999 6 3 Almost all warnings (-Wall) now fixed! (Thanks to Jan Peman) More coding improvements from Gabriel Bouvigne and Warren Toomey. VBR (variable bit rate). Increases bit rate for short blocks and for frames where the number of bands containing audible distortion is greater than a given value. Much tuning needs to be done. Patch to remove all atan() calls from James Droppo. LAME 3.10 1999 5 30 Fast mode (-f) disables psycho-acoustic model for real time encoding on older machines. Thanks to Lauri Ahonen who first sent a patch for this. New bit reservoir usage scheme to accommodate the new pre-echo detection formulas. Tuning of AWS and ENER_AWS pre-echo formulas by Gabriel Bouvigne and myself. They work great! now on by default. In jstereo, force blocktypes for left right channels to be identical. FhG seems to do this. It can be disabled with "-d". Patches to compile MP3x under win32 (Thanks to Albert Faber). bin_serach_stepsize limited to a quantizationStepSize of -210 through 45. outer_loop() will now vary Mid Side scalefactors independently. Can lead to better quantizations, but it is slower (twice as many quantizations to look at). Running with "-m f" does not need this and will run at the old speed Bug in inner_loop would allow quantizations larger than allowed. (introduced in lame3.04, now fixed.) Updated HTML documentation from Gabriel Bouvigne. Unix man page from William Schelter. numlines[] bug fixed. (Thanks to Rafael Luebbert, MPecker author). Quantization speed improvements from Chirs Matrakidis. When comparing quantizations with the same number of bands with audible distortion, use the one with the largest scalefactors, not the first one outer_loop happened to find. Improved defination of best quantization when using -f (fast mode). subblock code now working. But no algorithm to choose subblock gains yet. Linux now segfaults on floating point exceptions. Should prevent me from releasing binaries that crash on other operating systems. LAME 3.04 1999 5 22 Preliminary documentation from Gabriel Bouvigne. I wouldn t have thought it was possible, but now there are even more speed improvements from Chris Matrakidis! Removed one FFT when using joint stereo, and many improvements in loop.c. "Fake" ms_stereo mode renamed "Force" ms_stereo since it forces mid/side stereo on all frames. For some music this is said to be a problem, but for most music mode is probably better than the default jstereo because it uses specialized mid/side channel masking thresholds. Small bugs in Force ms_stereo mode fixed. Compaq Alpha fixes from Nathan Slingerland. Some new experimental pre-echo detection formulas in l3psy.c (#ifdef AWS and #ifdef ENER_AWS, both off by default. Thanks to Gabriel Bouvigne and Andre Osterhues) Several bugs in the syncing of data displayed by mp3x (the frame analyzer) were fixed. highq (-h) option added. This turns on things (just one so far) that should sound better but slow down LAME. LAME 3.03 1999 5 18 Faster (20%) cleaner FFT (Thanks to Chris Matrakidis http //www.geocities.com/ResearchTriangle/8869/fft_summary.html) mods so it works with VC++ (Thanks to Gabriel Bouvigne, www.mp3tech.org) MP3s marked "original" by default (Thanks to Gabriel Bouvigne, www.mp3tech.org) Can now be compiled into a BladeEnc compatible .DLL (Thanks to Albert Faber, CDex author) Patches for "silent mode" and stdin/stdout (Thanks to Lars Magne Ingebrigtsen) Fixed rare bug if a long_block is sandwiched between two short_blocks, it must be changed to a short_block, but the short_block ratios have not been computed in l3psy.c. Now always compute short_block ratios just in case. Fixed bug with initial quantize step size when many coefficients are zero. (Thanks to Martin Weghofer). Bug fixed in MP3x display of audible distortion. improved status display (Thanks to Lauri Ahonen). LAME 3.02 1999 5 12 encoder could use ms_stereo even if channel 0 and 1 block types were different. (Thanks to Jan Rafaj) added -k option to disable the 16 kHz cutoff at 128kbs. This cutoff is never used at higher bitrates. (Thanks to Jan Rafaj) modified pe bit allocation formula to make sense at bit rates other than 128kbs. fixed l3_xmin initialization problem which showed up under FreeBSD. (Thanks to Warren Toomey) LAME 3.01 1999 5 11 max_name_size increased to 300 (Thanks to Mike Oliphant) patch to allow seeks on input file (Thanks to Scott Manley) fixes for mono modes (everyone who pointed this out) overflow in calc_noise2 fixed bit reservoir overflow when encoding lots of frames with all zeros (Jani Frilander) LAME 3.0 1999 5 10 GPSYCHOの追加 (Mark Taylor) MP3xの追加 (Mark Taylor) LAMEはMark Taylorによってメンテナンスされます。
https://w.atwiki.jp/terragen3/pages/74.html
Node Type Render Node Description and Purpose The Render node is one of the main nodes in Terragen 2. The Render node contains the settings used to produce final renders and is also used to start rendering animation sequences. The Render node works in concert with the Camera node to create a render of your scene from a specific perspective. Basic controls include the Width and Height of your output image, the camera from which your scene will be rendered, overall scene Detail, and Antialiasing. Many additional controls for fine-tuning scene detail and quality are also provided, including Global Illumination (GI) settings, as well as Contrast and Gamma Correction functions. You can also render partial crops of your select cameras view using the Crop Region functions. Sequence/Output allows you to output a sequence of images for animation (only functional in Animation version). When you start a new project in TG2 there are two render nodes created for you. One is called "Full Render" and the other is called "Quick Render". Both of these nodes are Render nodes. The difference between them is that "Full Render" has preset settings more suitable to a final render whereas "Quick Render" has lower quality presets suitable for a quick preview render. Settings Master Check this to make the node the Master render node. The Master render node is the one which will be used to render projects loaded from the command line or a batch file. Image width This param sets the width of the rendered image. Image height This param sets the height of the rendered image. Lock aspect ratio If this is checked then the image aspect ratio is locked. When you make changes to the image width or height the other param will be changed so that the aspect ratio of the image is maintained. Aspect ratio You can change the aspect ratio for the image using the controls under the Lock aspect ratio param. Values greater than 1 will make the image wider and values less than 1 will make the image taller. Camera This param sets the Camera node used for rendering the image. A Render node must have a camera assigned to it before it can render. Surfaces visible If this is unchecked surfaces are not rendered. Atmosphere visible If this is unchecked the atmosphere is not rendered. This might be useful if you are rendering orthographic images for texture overlays in another application, for example. Do shadows Uncheck this to stop shadows rendering. Render Image Clicking this button will start the render.
https://w.atwiki.jp/goron/pages/355.html
設定項目 takeStreamImmediately Set whether the button to "Get stream" is pressed when entering the room. 0 for No,1 for Yes numbering Numbering the anonymous. 0 for No, 1 for Yes, 2 for a pseudo-white trip on all of them. clearBubble Press Enter once to turn off the speech bubble. 0 to Not turn off, 1 to Turn off notifyMention When Username Mention Sound (or Custom Mention Sound Pattern ) is ON and your name is called, also notify in the lower right corner. 0 for No notification, 1 for Notification only when inactive replyMsg When you click on the call notification, automatically reply. '', is no reply. 'n', is reply with n. notifyAccess Room entry/exit notification. 0 for no notification, 1 for notification only when active, 2 for notification only when inactive, 3 for always notification accessLog Enter/exit log. Do not output with 0, Output with 1. notifyStream Stream start notification. 0 for no notification, 1 for notification only when inactive. hairControl Naito Horison's hair control. 0 is the default, 1 never grows back, 2 absolutely grows back. autoBlock Automatic block. '' for nobody is blocked. Surround names with ' and separate them with commas. Example A name that includes both stinky dog and GYAHAHA is blank → 'stinky dog,GYAHAHA' RegExp使用可 roomColor 部屋の背景色を'#000000'みたいに書く ''で未指定 logWindowCSS ログ窓のCSSを``の間に書く userCSS ぽいぽいのCSSを``の間に書く
https://w.atwiki.jp/terragen/pages/153.html
このドキュメントは2017年1月30日現在、Windows版Terragen 4(Build 4.0.11)のフォルダ内にある"Docs"フォルダの中の"win_command_line.txt"を翻訳したものです。 (\Program Files\Planetside Software\Terragen 4\Docs) Terragen 4のコマンドラインまたはシェル環境からの実行 TG4には2つの実行形式が用意されています tgd.exe コンソールに何も印字しません。バックグラウンドで実行を継続している間にすぐにコマンドプロンプトに戻ります。 tgdcli.exe "tgd.exe"とまったく同じですが、メッセージと警告がコンソールに表示され、実行が完了した後にのみコマンドプロンプトに戻ります。 両方の実行形式のファイルは、GUIの有無に関わらず実行する事ができ、どちらも同じコマンドラインオプションを共有します。 セットアップ "tgd"または"tgdcli"は、コマンドラインからいくつかの異なるモードで起動する事が出来ます。ただし、コマンドラインから実行する前に、いくつかの環境変数を設定する事をお勧めします。 If Terragen is not in the current working directory, it will probably make lots of complaints when it starts. It s not enough just to pass the full path of the tgdcli command when you run it. Terragen needs to know where it can find other related files. To fix this, you can set the TERRAGEN_PATH environment variable. For example, on the Windows command line or batch file set TERRAGEN_PATH=C \Program Files\Planetside Software\Terragen 4 In other shells you would use the appropriate syntax (such as setenv). IMPORTANT If you set the TERRAGEN_PATH variable you modify the behaviour of all instances of Terragen within the scope of the variable, and this may cause problems if you have multiple versions installed. You can avoid using the TERRAGEN_PATH variable if you cd to the directory before calling the executable. EXECUTION Once the environment variable is set, you can run Terragen. Here are some examples at the Windows command prompt or in a batch file. In other shells you would probably replace %TERRAGEN_PATH% with $TERRAGEN_PATH. Quotes are used to surround the executable path, because TERRAGEN_PATH may contains spaces. Run Terragen as normal "%TERRAGEN_PATH%/tgdcli" Run Terragen and load a project file "%TERRAGEN_PATH%/tgdcli" -p myproject.tgd Run Terragen without the GUI, render frame 42, then close "%TERRAGEN_PATH%/tgdcli" -p myproject.tgd -hide -exit -r -f 42 Run Terragen without the GUI, render frames 1,4,51,53,55,57,59, then close "%TERRAGEN_PATH%/tgdcli" -p myproject.tgd -hide -exit -r -f 1,4,51-60/2 IMPORTANT Currently Terragen automatically sets the -hide and -exit flags whenever -r is set, but you should always set -hide and -exit if you don t want this behaviour to change in future versions. ALL COMMAND LINE OPTIONS exit Exit Terragen after rendering has finished. Do not show any dialog boxes (because they may prevent exiting). f frameRange|commaSeparatedFrameRanges Set the frame range or list of frame ranges to render when -r is also used. If -r is not used, the current frame is set to the first in the range. The list can contain any combination of frames or frame ranges separated by commas without any whitespace. Example -f 34 Set the frame to render to 34. Example -f 1-100 Set the frame range to render from 1 to 100 (inclusive). Example -f 1-100/5 Set the frame range to render from 1 to 100 with a step size of 5. This produces the sequence 1, 6, 11, 16, ... , 96. Note that frame 100 is not rendered because 96 + 5 = 101 which is outside the specified range. Example -f 34,37,38 Set the list of frames to render to 34, 37, 38 Example -f 1-50,66,71-100/10 Set the list of frames to render from 1 to 50 (inclusive) followed by 66 followed by 71, 81, 91. Note that frame 100 is not rendered because 91 + 10 = 101 which is outside the specified range. hide Hide the graphical user interface. Do not show any dialog boxes. no3dpreview Do not open the 3D Preview automatically. nonetworkview Do not open the Network View automatically (except in Node Network Layout). o filename Set the renderer s output image filename to filename before rendering. C-style format strings can be used to automatically insert the frame number, eg. C \frames\image.%04d.IMAGETYPE.exr Supported image extensions are .bmp, .rgb, .sgi, .exr, .tif, .tiff ox filename Set the renderer s "extra output images" filename to filename before rendering. Extra output images should contain the string "IMAGETYPE" (not including quotes). When a render element is written, "IMAGETYPE" is automatically replaced by the name of the element. By default the only element is "tgAlpha", but additional elements can be enabled using a Render Layer. For example C \frames\image.0023.IMAGETYPE.exr may result in C \frames\image.0023.tgAlpha.exr C \frames\image.0023.tgSurfRgb.exr C \frames\image.0023.tgSurfAlpha.exr etc. or, if "create subfolders" option is enabled (in project or command line), may result in C \frames\tgAlpha\image.0023.tgAlpha.exr C \frames\tgSurfRgb\image.0023.tgSurfRgb.exr C \frames\tgSurfAlpha\image.0023.tgSurfAlpha.exr etc. C-style format strings can be used to automatically insert the frame number. Example C \frames\image.%04d.IMAGETYPE.exr Supported image extensions are .bmp, .rgb, .sgi, .exr, .tif, .tiff oxsubfolders Create and use subfolders when outputting render elements (extra output images). This overrides the "create subfolders" option in the project s render node. For example C \frames\image.0023.exr may result in C \frames\tgAlpha\image.0023.exr C \frames\tgSurfRgb\image.0023.exr C \frames\tgSurfAlpha\image.0023.exr etc. It can be combined with the use of "IMAGETYPE" in the filename, so the following is possible C \frames\tgAlpha\image.0023.tgAlpha.exr C \frames\tgSurfRgb\image.0023.tgSurfRgb.exr C \frames\tgSurfAlpha\image.0023.tgSurfAlpha.exr etc. If the command line contains both -oxsubfolders and -oxsubfolders=no then the behaviour is undefined. oxsubfolders=no Prevent the creation or use of subfolders when outputting render elements (extra output images). This overrides the "create subfolders" option in the project s render node, which is usually enabled. If the command line contains both -oxsubfolders and -oxsubfolders=no then the behaviour is undefined. p filename Open the project specified by filename before doing anything else. r Render current frame (or frame range with -f) using the "master" renderer; save output image and extra output images (if enabled). The -hide and -exit flags are set automatically in the current version. The "master" renderer is the render node which has its "master" setting enabled, or the first render node in the project if none are masters. Another render node can be made the "master" by using the -rendernode command line option. rendernode nodename Make nodename the "master" renderer after autoloading the project at startup. nodename must be the name of a render node in the project. Projects loaded subsequently are not affected. threads numberOfThreads Override the number of threads used for rendering and other multithreaded tasks. When used, this command line override takes priority over the min/max thread settings in the render node and the cores override in Preferences. tilex minx maxx Limit the rendered region to a fraction of the image or crop region to be rendered. minx and maxx should be numbers between 0 and 1, where minx maxx. For example, "-tilex 0 0.5" renders only the left half of the image or the left half of whatever crop region was already set. You can use both -tilex and -tiley simultaneously to define a rectangular region. tiley miny maxy Limit the rendered region to a fraction of the image or crop region to be rendered. miny and maxy should be numbers between 0 and 1, where miny maxy. For example, "-tiley 0 0.5" renders only the bottom half of the image or the bottom half of whatever crop region was already set. You can use both -tilex and -tiley simultaneously to define a rectangular region. cropoutput Crop the output image(s) to the dimensions of the rendered region (defined by "crop region" and/or -tilex, -tiley), i.e. do not pad to the full image dimensions. w filename The same as the -p option
https://w.atwiki.jp/wildbored/pages/6.html
Structure of a program プログラミング言語を学ぶ一番いい方法はプログラムを書くことですので、最初のプログラムを以下に載せます。 // my first program in C++ #include iostream using namespace std; int main () { cout "Hello World!"; return 0; } Hello World! 最初のパネルはプログラムのソースコードです。次のパネルはプログラムをコンパイルし実行した結果です。プログラムを編集したりコンパイルする方法はあなたが使っているコンパイラに依ります。開発環境があるかないかや、またコンパイラのバージョンにもまた左右されます。C++でのコンソールアプリケーションをどうやってコンパイルすればいいのかが分からない場合は、Compilersを参考にしたり、あなたが使っているコンパイラのマニュアルやヘルプも参考にしてください。 このプログラムはプログラマーが新しい言語などを習得するときに最初に書く典型的なプログラムで、スクリーンに"Hello World!"と1行表示します。C++で書ける最も単純なプログラムですが、どのC++のプログラムも持っている基本的な要素はすでに含まれています。1行1行コードをおっていきます。 // my first program in C++ 1行コメントです。スラッシュが2つ(//)で始まっている全ての1行はコメントと解釈され、プログラムの振る舞いになんら影響を及ぼしません。プログラマーはコメントを使ってソースコード中に短く説明や意図を含ませることができます。ここでは、このプログラムが何であるか概要を解説しています。 #include iostream #で始まっている1行はプリプロセッサに指示を与えます。つまり、#で始まっている行はなんらかの式としての1行ではなくコンパイラのプリプロセッサに対して指示を与えます。ここでは、#include iostream の指示はプリプロセッサに iostream のヘッダファイルをインクルードすることです。この iostream のヘッダファイルはC++で基本的な入力と出力を宣言が記述されています。そして、後のプログラム中で必要となる機能のためにインクルードされています。 using namespace std; 標準的なC++のライブラリ要素全てのnamespaceと呼ばれるものを宣言しています。ここでのnamespaceはstdを使われるようにするためです。つまり、stdの機能を使うために、using namespaceの式を宣言することでライブラリの実体を使えるようになります。標準的なライブラリをつかうためにこのusingの1行はC++でよく使われます。実際に、チュートリアル中の多くのソースコードでよく含まれています。 int main () This line corresponds to the beginning of the definition of the main function. The main function is the point by where all C++ programs start their execution, independently of its location within the source code. It does not matter whether there are other functions with other names defined before of after it - the instructions contained within this function s definition will always be the first ones to be executed in any C++ program. For that same reason, it is essential that all C++ programs have a main function. The word main is followed in the code by a pair of parentheses (()). That is because it is a function declaration In C++, what differentiates a function declaration from other types of expressions are these parentheses that follow its name. Optionally, these parentheses may enclose a list of parameters within them. Right after these parentheses we can find the body of the main function enclosed in braces ({}). What is contained within these braces is what the function does when it is executed. cout "Hello World"; This line is a C++ statement. A statement is a simple or compound expression that can actually produce some effect. In fact, this statement performs the only action that generates a visible effect in our first program. cout represents the standard output stream in C++, and the meaning of the entire statement is to insert a sequence of characters (in this case the Hello World sequence of characters) into the standard output stream (which usually is the screen). cout is declared in the iostream standard file within the std namespace, so that s why we needed to include that specific file and to declare that we were going to use this specific namespace earlier in our code. Notice that the statement ends with a semicolon character (;). This character is used to mark the end of the statement and in fact it must be included at the end of all expression statements in all C++ programs (one of the most common syntax errors is indeed to forget to include some semicolon after a statement). return 0; The return statement causes the main function to finish. return may be followed by a return code (in our example is followed by the return code 0). A return code of 0 for the main function is generally interpreted as the program worked as expected without any errors during its execution. This is the most usual way to end a C++ program. You may have noticed that not all the lines of this program perform actions when the code is executed. There were lines containing only comments (those beginning by //). There were lines with directives for the compiler s preprocessor (those beginning by #). Then there were lines that began the declaration of a function (in this case, the main function) and, finally lines with statements (like the insertion into cout), which were all included within the block delimited by the braces ({}) of the main function. The program has been structured in different lines in order to be more readable, but in C++, we do not have strict rules on how to separate instructions in different lines. For example, instead of int main () { cout " Hello World "; return 0; } We could have written int main () { cout "Hello World"; return 0; } All in just one line and this would have had exactly the same meaning as the previous code. In C++, the separation between statements is specified with an ending semicolon (;) at the end of each one, so the separation in different code lines does not matter at all for this purpose. We can write many statements per line or write a single statement that takes many code lines. The division of code in different lines serves only to make it more legible and schematic for the humans that may read it. Let us add an additional instruction to our first program // my second program in C++ #include iostream using namespace std; int main () { cout "Hello World! "; cout "I m a C++ program"; return 0; } Hello World! I m a C++ program In this case, we performed two insertions into cout in two different statements. Once again, the separation in different lines of code has been done just to give greater readability to the program, since main could have been perfectly valid defined this way int main () { cout " Hello World! "; cout " I m a C++ program "; return 0; } We were also free to divide the code into more lines if we considered it more convenient int main () { cout "Hello World!"; cout "I m a C++ program"; return 0; } And the result would again have been exactly the same as in the previous examples. Preprocessor directives (those that begin by #) are out of this general rule since they are not statements. They are lines read and discarded by the preprocessor and do not produce any code by themselves. Preprocessor directives must be specified in their own line and do not have to end with a semicolon (;). Comments Comments are parts of the source code disregarded by the compiler. They simply do nothing. Their purpose is only to allow the programmer to insert notes or descriptions embedded within the source code. C++ supports two ways to insert comments // line comment /* block comment */ The first of them, known as line comment, discards everything from where the pair of slash signs (//) is found up to the end of that same line. The second one, known as block comment, discards everything between the /* characters and the first appearance of the */ characters, with the possibility of including more than one line. We are going to add comments to our second program /* my second program in C++ with more comments */ #include iostream using namespace std; int main () { cout "Hello World! "; // prints Hello World! cout "I m a C++ program"; // prints I m a C++ program return 0; } Hello World! I m a C++ program If you include comments within the source code of your programs without using the comment characters combinations //, /* or */, the compiler will take them as if they were C++ expressions, most likely causing one or several error messages when you compile it.